A. Vitya in the Countryside
给出一个循环的序列的一部分,求下一个数是应该UP还是DOWN
0和15直接输出,其余根据倒数第二个数判断。
#include
B. Anatoly and Cockroaches
一个只含有r和b的序列,每次可以序列内交换位置,或者直接改变某个位置,输出变为rb交替的序列的最小操作次数。
结果只有两种情况,然后分情况统计一下需要变换的位置,然后取max(b->a的个数,a->b的个数)。
#include
C. Efim and Strange Grade
给出一个小数,最多可以进行k次四舍五入,输出可以得到的最大结果。
找到从左往右数,第1个可以四舍五入的位置,然后从这一位开始往左进行进位操作和四舍五入操作,每一次进位k--,直到k=0或者到小数点。
到了小数点之后,不管k是否为0,都不能再四舍五入,这时只能进行进位操作了。
#include
E. Sasha and Array
一个1e5的序列,有2种操作:
1)区间[l,r]加x
2)查询区间[l,r]内的F[i]的和。F[i]为斐波那契数列的第i项。
线段树套矩阵。
可以简单地理解为把普通的线段树区间更新区间查询的节点以及lazy tag替换为矩阵。
由于矩阵运算的结合律,我们在PushDown的时候可以直接节点与lazy tag相乘。
全部用矩阵来搞的话会跑5000ms左右,把节点变成一个二维数组的话会快很多。
下面是节点为数组的代码。节点为矩阵的代码和这个几乎完全一样。
#include