T1:由于没有强制在线,我们可以倒着做一遍。
设sum表示所有数的异或和,并且记录每一个点的左边的点和右边的点。那么我们倒着搜,每搜到一个点时,用sum减去它与他左边和右边的异或值,再加上它左边与右边的异或值,每次用ans异或sum就行了。
T2:题解待更新。
T3:公式:
m=m/2;
f[0]=1,f[1]=0,f[i]=(i*2-1)*f[i-1]+f[i-2]
求出f[m]
快速幂计算f[m]^n
ans=f[m]^n
ans=sigma(i*2*ans)(1<=i<=n*m)
最后的答案就是ans。
本文提供三道算法竞赛题目的解答思路。T1题通过逆向搜索和异或运算解决;T2题解待更新;T3题利用递推公式及快速幂计算方法得出答案。

160

被折叠的 条评论
为什么被折叠?



