codechef TREEWALK

题意

给定一棵(n)个点的树,要求每个点到(r)距离为(K)的路径个数

做法一

换个东西,改成从(r)出发,然后距离(K)走到每个点
(O(n^2))求出特征多项式,论文
然后(A^k=sumlimits_{i=0}^{n-1}c_iA^i)
(A)中只有(O(n))个位置有值,((A^{i+1})_{r,x}(xin [1,n]))可以通过((A^i)_{r,x}(xin [1,n]))(O(n))递推过来

做法二

这个东西是有线性递推式的,说详细点

(S(A^k))表示(A^k)上某些位置的和,这个关于(k)是有线性递推的
然后先只考虑一个位置((i,j)),要维护的东西是一行,然后仿佛乘上(A),这显然是个线性递推
在考虑进所有的位置,乘上(A)压起来表示显然都是一样的嘛

然后大力BM插就好了

题外话

做法一是官方题解,限于此题,就没看了,感兴趣的就去看下吧,应该还挺好玩的

原文地址:https://www.cnblogs.com/Grice/p/12865091.html