题单:
(以下题号均来自洛谷)
P2020 [NOI2011]兔农
P1397 [NOI2013]矩阵游戏
P1447 [NOI2010]能量采集
P1587 [NOI2016]循环之美
P1224 [NOI2013]向量内积
P4204 [NOI2006]神奇口袋
P2109 [NOI2007]生成树计数
P4774 [NOI2018]屠龙勇士
P3214 [HNOI2011]卡农
题解 (注:点击标题看原文)
[NOI2011]兔农
题意:已知n, k, p, 对于一个斐波那契数列,当它的一项对k取模等于1时,把它减一,并接着以f[i] = f[i - 1] + f[i - 2]的规律转移
求它第n项对p取模后的值
1 <= n <= 1018
2 <= k <= 106
2 <= p <= 109
这题写不动啊。。。暴力转移可以拿75 待填坑
[NOI2013]矩阵游戏
题意:对于一个n行m列的矩阵,第i行第j列的元素为F[i][j]。已知a, b, c, d,并且矩阵元素满足:
F[1][1] = 1
F[i,j] = a * F[i][j-1] + b (j!=1)
F[i,1] = c * F[i-1][m] + d (i!=1)
求F[n][m] 答案对1e9 + 7取模
1 <= n, m <= 1e1000000
1 <= a, b, c, d <= 1e9
这道题一眼看上去非常的矩阵快速幂
好像没毛病?
看了眼数据量 哭辽
没关系 我可以10000进制快速幂!(看起来很稳
那就写一写?
[NOI2010]能量采集
题意:
对于一个n行m列的方阵 第i行第j列的值是gcd(i, j) * 2 - 1 求方阵和 n, m <= 1e5
这道题很妙了
f[x] 为满足 gcd(i, j) = x 的数对(i, j)的个数
g[x] 为i,j因数包括x的数对(i, j)的个数
显然g[x] = ( n / x ) * ( m / x )
而f[x] + f[2x] + f[3x] + … = g[x]
所以f[x] = g[x] - f[2x] - f[3x] - …
然后从n到1计算f即可
复杂度O(n ln n)