「HLOI2016」序列问题
题目描述
现定义序列它的第
定义
其中,
现在给出序列
输入
输入的第一行有两个整数
第二行是一个整数
第三行包含
接下来一行是一个整数
输出
输出包含一个整数,即相应输入文件的答案。
样例输入
1 | 42 1248493 |
样例输出
1 | 232959 |
数据范围及约定
对于
对于
对于
时间与空间限制
时间限制:
题解
一看
一看递推关系矩阵逃不掉了……
所以矩阵快速幂逃不掉了。
MDZZ 怎么搞矩阵?
这回在化学课上推公式……
看出什么来了吗?反正我看了一天
可以看出这个
假如能搞出一个矩阵的话,可以借鉴分块思想,将一个循环节看成一个块,将整个块内的值求出后,跑矩阵快速幂,之后零散部分暴力。
可是有修改……?
就将修改看成断点,假如断点处于同一块内,暴力即可,如果不在,零散暴力,整块快速幂。 时间为
所以,怎么构造矩阵?
两个矩阵,一个是处理影响的,一个是统计答案的。
统计答案的矩阵是一个
当然也可以写成
处理影响的矩阵是一个
遇到断点答案矩阵暴力乘矩阵即可,此矩阵为:
其中
这还没完,因为矩阵与
这样就可以了。
时间复杂度为
还有一些许多细节需要注意……具体参见代码。
代码见这里。