【济南集训】20191006解题报告
(离第一就差一点点,死亡)
第一题良心保底题(然而这个我也没有抓住)
有个特判忘了。。自闭
第二题就是裸的最长不下降子序列,我数组开小了,挂了3个点。。。
第三题又蓝又紫,我做不好。。
120。。被安排的明明白白
第一题:
猜数游戏(guess)
【题目描述】
企鹅豆豆和企鹅豆沙在玩一个简单的猜数字小游戏,豆沙心想一个在 [1; 109] 之内
的正整数,然后豆豆猜一个数字,豆沙会告诉豆豆他猜的数字和答案的差的绝对值。这
个游戏进行了很多轮,然后现在告诉你他们每次问答记录,你需要推出每轮的答案,或
者判断存在多解或者无解。
【输入格式】
从文件 guess.in 中读入数据。
输入一行一个正整数 N 。接下来 N 行,每行两个整数 ai; bi, ai 表示第 i 轮豆豆猜
的值, bi 表示第 i 轮豆沙回答的差。
【输出格式】
输出到文件 guess.out 中。
输出一行 N 个整数表示这 N 轮答案。
如果第 i 轮的答案存在且唯一,则输出这个答案。
如果第 i 轮存在多个答案,输出 -1。
如果第 i 轮不存在答案,则输出 -2。
【样例 1 输入】
2
3 5
10 11
【样例 1 输出】
8
21
很良心的一道题。。应该算是打卡题了
只需要注意一个点,要特判b=0的情况
代码十分简单就不放了
第二题:
绝世秒题(silly)
【题目描述】
企鹅豆豆有一个序列非负整数 A ,然后他想找出 A 的一个子序列 B ,满足对于 B
中任意相邻两个元素的异或值大于 3,即 Bi xor Bi+1 > 3。
现在他想知道序列 B 的长度最长能有多长?
这里的异或是指二进制异或,对应了 C + + 中 ˆ 运算符。
【输入格式】
从文件 silly.in 中读入数据。
输入的第一行包含一个正整数 n,保证 n ≤ 106,表示序列 A 的长度。
接下来一行 N 个非负整数,表示序列 A。保证序列 A 中的每个元素不超过 109。
【输出格式】
输出到文件 silly.out 中。
输出一个整数表示 B 可能的最长长度。
【样例 1 输入】
5
9 6 93 2 1
【样例 1 输出】
4
【样例 1 解释】
比如子序列 9 6 93 1 就是一个长度为 4 的合法子序列,并且没有长度为 5 的合法
的子序列。
裸裸的最长不下降子序列,当时想到的时候十分激动,终于可以A一道题了。。。
结果数组开小了
血的教训
10n=1*10n+1(不会你就给我用计算器啊啊啊)
数组加了一个0的AC代码:
#include<iostream> #include<cstdio> using namespace std; void read(int &x) { char c=0; x=0; while(!isdigit(c)) c=getchar(); while(isdigit(c)) x=x*10+c-'0',c=getchar(); } int a[1000001],dp[1000001]; int p,n; int main() { freopen("silly.in","r",stdin); freopen("silly.out","w",stdout); read(n); for(int i=1;i<=n;i++) { read(a[i]); } p=a[1]; for(int i=1;i<=n;i++) { if((a[i]^p)<=3) { dp[i]=dp[i-1]; } if((a[i]^p)>3) { dp[i]=dp[i-1]+1; p=a[i]; } } printf("%d",dp[n]+1); fclose(stdin); fclose(stdout); return 0; }
第三题:
五彩树(tree)
【题目描述】
企鹅豆豆有一颗五彩斑斓的树,每一个节点上有一种颜色 Ci。一对节点的缤纷值
定义为这两个节点之间的路径上的不同的颜色数。一个节点的绚丽值就是它和所有点
的缤纷值的和。现在企鹅豆豆想要知道每个点的绚丽值是多少?
【输入格式】
从文件 tree.in 中读入数据。
第一行一个整数 N, 代表树的节点个数;
接下来一行有 N 个数,第 i 个数代表每个节点的颜色值 Ci。
接下来 N - 1 行,每行两个数字 u; v,表示 u 和 v 之间有一条边。
【输出格式】
输出到文件 tree.out 中。
输出 N 行,每行一个数。第 i 行表示第 i 个节点的绚丽值。
【样例 1 输入】
5
1 2 3 2 3
1 2
2 3
2 4
1 5
【样例 1 输出】
10
9
11
9
12
【样例 1 解释】
对于第一个点,它和 12345 号点之间的缤纷值分别为 12322。所以他的绚丽值
为 1 + 2 + 3 + 2 + 2 = 10。
这题。。。我用了Floyd暴力。。
写了大概三四十行if吧。。。
(真不怕RE----来自wsq)
然后光荣的没有调出来。。
正解思路是从链开始推,在放到树上就行。
(RP++!)