6.11(J,K,L,M,N)
J - Magic Stones
题意:
给定两个序列c和t,每次可以进行一个操作让c[i]=c[i-1]+c[i+1]-c[i](1<i<n)
思路:
首先c1和t1,cn和tn必须相等,先设一个数组c1,c2,c3,c4和t1,t2,t3,t4,如果我们改变c3,那么c3'=c4+c2-c3,那么c4-c3'=c3-c2,c3'-c2=c4-c3,可以发现交换的是c4-c3和c3-c2,所以判段两个差分数组就可以了。
K - Perfect Triples
题意:
每次选择一个数字不重复的三元组(a,b,c),满足a xor b xor c=0,加入序列S中,求序列S的第n项
思路:
看了半天没发现什么规律,数列的前几项是(1 2 3)(4 8 12)(5 10 15)(6 11 13)(7 9 14)...由于是要xor,写成二进制
1 10 11 100 1000 1100 101 1010 1111 110 1011 1101 111 1001 1110 10000 100000 110000 10001 100010 110011...
就可以发现除去第一组,剩下的数字结尾都是以00 01 10 11循环,然后第三第四位也是如此,第一个数在最前面加个1,第二个数在最前面加个10,第三个数在加个11
L - Sum of Digits
题意:
定义f(x)为数字x的各位数之和,给一组n和k,找到x满足f(x)+f(x+1)+...+f(x+k)=n
思路:
题目范围k<9,所以最多有一次进位,且n<=150,所以最多10+位,所以可以枚举数字x的位数.进位的位置i和第一位数字j,第一位到第i位之间全部填9,最后判断剩下的值%k是否等于0
M - Kuroni and the Score Distribution
题意:
构造一个数列a满足ai+aj=ak(i<j<k)的情况共有m组
思路:
对于一个数列,最多的情况就是1,2,3,4...,每增加一个数字x,满足条件的组数就加(x-1)/2,先一直加到边界,下一个数字枚举,剩下的位置从大到小
N - Koa and the Beach (Hard Version)
题意:
有n片沙滩,有个初始深度,每2k秒内,前k秒+1,后k秒-1,当深度大于l时会淹死,每秒可以前进一格或不动,问是否能穿过
思路:
这个没有要求最快的时间,只问了能否通过,沙滩中在d[i]+k<l的位置是可以无限停留的,那么就是要从穿过安全点之间的区域,所以时间为下降段到上升段之间的时间,然后每个位置可以求出一个最早到达的时间,然后保证时间递增且在上升段时不超过l,否则NO