推出
[a011]×[x0c]=[x1c]。
solved on 2025/2/17
问题:快速幂终于写对了,但是最后乘上初始矩阵的时候我写的是 ans=(anss.a[0][0]*x+c)%m。这是错的,因为我没有正确理解矩阵快速幂的原理。
操作序列看成循环节,比如
t=40,循环节长度为
6 就把操作合起来做
6 次再单独做
4 次。
如果操作序列长度不一样,就把他们的
lcm 次合起来做。
和上题思路差不多,发现
2,3,4 的
lcm 是
12,所以每过
12 秒食人鱼就回到了原来的位置,把
12 做成循环节,搞
12 个矩阵,合在一起快速幂,剩下的单独做就行。
三个人构造相邻两天的矩阵
0q0000000001p010100000000v0000000011u010000000000y0000001011x000000r0000100000t00012100001000211100000100000w00000010000z×akak+1bkbk+1ckck+1k2k1wkzk=ak+1ak+2bk+1bk+2ck+1ck+2(k+1)2k+11wk+1zk+1
1000110011×ansx1=nextansx+11
多位数分开计算,一位数算一遍,算完之后把
10 改成
100 算两位数,再改成
1000 算三位数,最多
18 位。
暴力 dp 非常简单。
就是维护一个前缀和,
gi,j表示与其奇偶性相同的
fk,j 的和,即
gi,j=fi,j+fi−2,j+fi−4,j。
fi,j=gi−1,j+gi−1,j−1+gi−1,j+1
gi,j=gi−2,j+fi,j
矩阵优化时维护
g 和
f,
g 和
f 固定在同一个矩阵里,像 P1707 一样推状态转移矩阵。
不难,但是没记完。
暴力是分层图最短路。
fi,k 表示从
1 到
i 用了
k 次的最短路。
fi,k=min(fj,k−1−aj,i,fj,k+aj,i)
fi,j,x 用
x 次,从
i 到
j 的最短路。
fi,j,k=min(fi,k,x−1+fk,j,1)
设
A=fi,j,1,
B=fi,j,x
形如
B=min(B+A)。
Ci,j=min(Bi,k+Ak,j)
广义矩阵乘法。
也是广义矩阵乘法。
形如
Ci,j=⨁(Bi,k ⨂ Ak,j)。