这题卡常卡的太离谱了,我一个矩阵快速幂调了近一个小时,一直还是 TLE。建议放宽时限。如果建议失败,这里给出几种优化方法。
-
下标可以从 0 开始。
-
可以优化 dp 取模
il void upd(ll &a){a += a >> 31 & P;}
for (int i = 1; i <= 100; i++)
for (int j = 1; j <= i; j++)
if (a.a[100 - j][99])
upd(f[i] += f[i - j] - P);
- 可以优化矩阵乘法时的枚举 k 的次数。
for (int k = 0; k < 100; k++)
b.a[i][j] = (b.a[i][j] + a[i][k] * c.a[k][j]) % P;