![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
矩阵优化
Love_xyh
这个作者很懒,什么都没留下…
展开
-
[SDOI2009]HH去散步
题目要求对于同一条边,不能走过去后立刻走回来,所以很明显我们需要把一条边拆成两条来做。 此时我们的状态也需要改变:num[i][j][t]表示从第i条边到第j条边,经过时间为t的方案数。 因为我们的方案是设第i条边到第j条边,所以初始矩阵赋值时,其实已经过去了一个单位的时间。所以我们只需要,再累乘矩阵T-1次即可。 #include <bits/stdc++.h> using namespace std; const int N=130,MOD=45989; int n,m,t,A,B,cnt,原创 2020-09-09 19:47:37 · 128 阅读 · 0 评论 -
[SCOI2009] 迷路
当边权均为0或1时,我们是num[i][j][t]表示从i点到j点时间为t的方案数,将t拿出来,用矩阵快速幂进行优化,使得复杂度由O(Tn^3)变为O(logT n^3)。 那么现在对于边权不同的图怎么办呢? 我们将一个点拆为9个点来做。如果点i到点j有一条k的边,那么我们就连一条(i,k)到(j,1)的边。 而对于每个点拆成的9个点,在相邻两点之间进行连边。 最后,将矩阵累乘T次,用矩阵快速幂优化即可。 #include <bits/stdc++.h> using namespace std;原创 2020-09-09 19:44:09 · 92 阅读 · 0 评论 -
矩阵优化学习记录1
洛谷 P3390 【模板】矩阵快速幂 矩阵快速幂,作为学习矩阵优化的前置知识 #include <bits/stdc++.h> #define int long long using namespace std; const int N=105,MOD=1e9+7; int n,k; struct number{int num[N][N];}base,ans; inline numb...原创 2019-11-30 18:49:25 · 157 阅读 · 0 评论