codechef TREEWALK
题意
给定一棵\(n\)个点的树,要求每个点到\(r\)距离为\(K\)的路径个数
做法一
换个东西,改成从\(r\)出发,然后距离\(K\)走到每个点
\(O(n^2)\)求出特征多项式,论文
然后\(A^k=\sum\limits_{i=0}^{n-1}c_iA^i\)
\(A\)中只有\(O(n)\)个位置有值,\((A^{i+1})_{r,x}(x\in [1,n])\)可以通过\((A^i)_{r,x}(x\in [1,n])\),\(O(n)\)递推过来
做法二
这个东西是有线性递推式的,说详细点
\(S(A^k)\)表示\(A^k\)上某些位置的和,这个关于\(k\)是有线性递推的
然后先只考虑一个位置\((i,j)\),要维护的东西是一行,然后仿佛乘上\(A\),这显然是个线性递推
在考虑进所有的位置,乘上\(A\)压起来表示显然都是一样的嘛
然后大力BM插就好了
题外话
做法一是官方题解,限于此题,就没看了,感兴趣的就去看下吧,应该还挺好玩的