Link
Solution
为什么大家都一看这道题就是矩阵乘法。。为什么我就从来没听说过。。 不过用矩阵乘法的求法是很好理解的吧 如果边权为,那就给邻接矩阵的赋值为,表示以为终点,走步,有一种路径。 矩阵乘一下相当于走了一步,可以看一下矩阵乘法的式子,就是统计方案的DP。 这样的话,二分需要走多少步,然后矩阵快速幂,用方案数目跟比较,最后可以得到答案。 然而会T。这样的话,就可以用类似倍增LCA的做法,处理出邻接矩阵的的次方,然后从大到小试乘,如果可以的话就加入答案。 边权不为,那就把每个点拆成三个,表示边权为的时候所到的点的分身。 因为拆了点,本来有些点是不会成为路径的终点的却可以成为路径的终点,这种方案不能算进去。 于是就在矩阵上乘上这个点的出度,相当于矩阵里是路径的倒数第二个点的方案数目,乘上一个出度才是完整的路径。 所以条件需要是,最后再
另外
本题需要卡常数尽量减少运算+有理有据的底层优化
Tips
矩阵乘法求路径数目?感觉很喵的样子
Code
1 |
|