[HDU2157]How many ways??(DP + 矩阵优化)
传送门
k < 20
k这么小,随便dp一下就好了。。。
dp[i][j][k]表示从i到j经过k个点的方案数
4重循环。。
但是如果k很大就不好弄了
把给定的图转为邻接矩阵,即A(i,j)=1当且仅当存在一条边i>j。令C=A*A,那么C(i,j)=ΣA(i,k)*A(k,j),实际上就等于从点i到点j恰好经过1个点的路径数(枚举k为中转点)。类似地,C*A的第i行第j列就表示从i到j经过2个点的路径数。同理,如果要求经过k步的路径数,我们只需要二分求出A^k即可。
#include <cstdio> #include <cstring> #define p 1000 int n, m, k, T; struct Matrix }ans; inline Matrix operator * (Matrix x, Matrix y) inline Matrix operator ^ (Matrix x, int y) return ans; } int main() scanf("%d", &T); for(i = 1; i <= T; i++) } return 0; }
上一篇:链接
下一篇:[luoguP3068] [USACO13JAN]派对邀请函Party Invitations(stl大乱交)
DP 矩阵
spc文件怎么看,spc文件用什么打开?
0文件怎么看,0文件用什么打开?
sparseimage文件怎么看,sparseimage文件用什么打开?
sp文件怎么看,sp文件用什么打开?
dv文件怎么看,dv文件用什么打开?
soundpack文件怎么看,soundpack文件用什么打开?
dus文件怎么看,dus文件用什么打开?
dtw文件怎么看,dtw文件用什么打开?
spdf文件怎么看,spdf文件用什么打开?
0文件怎么看,0文件用什么打开?