zoj 3497 Mistwald 矩阵快速幂
来源:互联网 发布:域名被恶意投诉举报 编辑:程序博客网 时间:2024/05/22 05:25
知道了矩阵的新作用,矩阵A^P,A[i][j]的数值是从i到j长度为P的路径条数,矩阵相乘如果A[i][k为1,B[k][j]为1,A[i][j] 必然>=1,表明以k为桥梁将i和j连接起来,和floyd算法本质上是一致的。
传送门:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4320
#include <stdio.h>#include <string.h>#include <stdlib.h>int len_Matrix;int Mod;struct Matrix{ int M[35][35];};void Init_Matrix(Matrix * tmp){ for(int i=0;i<len_Matrix;i++){ for(int j=0;j<len_Matrix;j++){ tmp -> M[i][j] = 0; } } //tmp -> M[0][0] = 1;tmp -> M[0][2] = 1;tmp -> M[0][3] = 1; //tmp -> M[1][0] = 1;tmp -> M[2][1] = 1;tmp -> M[3][2] = 1;}Matrix multiply(Matrix a1,Matrix a2){ Matrix ans; for(int i=0;i<len_Matrix-1;i++){ for(int j=0;j<len_Matrix;j++){ ans.M[i][j] = 0; for(int k=0;k<len_Matrix-1;k++){ //ans.M[i][j] = (a1.M[i][k]*a2.M[k][j]+ans.M[i][j])%Mod; if(a1.M[i][k]*a2.M[k][j]){ ans.M[i][j] = 1; } } } } return ans;}Matrix Pow(Matrix tmp,int nl){ Matrix ans ; for(int i=0;i<len_Matrix;i++){ for(int j=0;j<len_Matrix;j++){ if(i==j)ans.M[i][j] = 1; else ans.M[i][j] = 0; } } while(nl){ if(nl&1){ ans = multiply(ans,tmp); } tmp = multiply(tmp,tmp); nl /= 2; } return ans;}void Input(){ int T; scanf("%d",&T); while(T--){ int n,m; scanf("%d %d",&n,&m); getchar(); len_Matrix = n * m; Matrix tmp; Init_Matrix(&tmp); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ int x1,y1,x2,y2,x3,y3,x4,y4; scanf("((%d,%d),(%d,%d),(%d,%d),(%d,%d))",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4); tmp.M[i*m+j][(x1-1)*m+(y1-1)] = 1; tmp.M[i*m+j][(x2-1)*m+(y2-1)] = 1; tmp.M[i*m+j][(x3-1)*m+(y3-1)] = 1; tmp.M[i*m+j][(x4-1)*m+(y4-1)] = 1; getchar(); } } int n1; scanf("%d",&n1); for(int i=0;i<n1;i++){ int k; scanf("%d",&k); Matrix ans = Pow(tmp,k); int con = 0; for(int j=0;j<len_Matrix;j++){ if(ans.M[0][j])con++; } if(!ans.M[0][len_Matrix-1]){ puts("False"); } else if(con==1){ puts("True"); } else puts("Maybe"); } puts(""); }}void File(){ freopen("a.in","r",stdin); freopen("a.out","w",stdout);}int main(void){ //File(); Input(); return 0;}
0 0
- ZOJ 3497 Mistwald(矩阵快速幂)
- zoj 3497 Mistwald 矩阵快速幂
- zoj 3497 Mistwald 矩阵快速幂
- ZOJ 3497 Mistwald(矩阵快速幂)
- ZOJ 3497Mistwald(矩阵快速幂)
- ZOJ 3497 Mistwald【矩阵快速幂】【图论】
- zoj 3497 Mistwald 矩阵快速幂
- zoj 3497 Mistwald(矩阵快速幂)
- ZOJ 3497-Mistwald(矩阵快速幂)
- 【已解决】zoj 3497 Mistwald 矩阵快速幂
- zoj 3497 Mistwald (矩阵应用)
- ZOJ 3497 Mistwald (矩阵快速幂解决类似图论问题)
- ZOJ 3497Mistwald 矩阵加速DP
- zoj-3497-Mistwald-矩阵
- zoj3497 Mistwald (矩阵快速幂+图论)
- ZOJ 3497Mistwald
- zoj 3497 Mistwald
- zoj 3497 mistwald
- 把刚添加到模型空间的实体选中的问题
- 哈希技术杂烩
- 如何在关闭ssh连接的情况下,让程序继续在后台运行?
- svn: Can't convert string from 'UTF-8' to native encoding 的解决办法
- eclipse启动时卡住org.eclipse.jdt.debug
- zoj 3497 Mistwald 矩阵快速幂
- STM32F3的ADC使用DMA模式传输转换数据
- listview
- 双击实体弹出对话框(重载AcDbDoubleClickEdit)
- unity中的http通信
- MyEclipse 2015优化技巧
- MVC缓存依赖:文件依赖
- 详谈 Unity3D 利用 Webservice 读取数据库
- 自动重置事件+临界区实现线程间同步