题目链接:传送门

题意:

一个图有n个顶点。已知邻接矩阵。问点能够反复用长度小于m的路径有多少。

分析:

首先我们知道了邻接矩阵A。那么A^k代表的就是长度为k的路径有多少个。

那么结果就是A^0+A^1+A^2+...+A^m。

然后我们能够构造一个矩阵来帮助我们求解。

X = | A , E |

| 0 , E |

==> 然后X^m 的矩阵的右上角的矩阵代表的就是A^0+A^1+A^2+...+A^m。

当然A^0+A^1+A^2+...+A^m,也能够用二分来求。

代码例如以下:

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std; const int maxn = 51*2; const int mod = 2015; typedef long long LL; struct matrix{
int a[maxn][maxn];
matrix(){
memset(a,0,sizeof(a));
}
}; matrix I; void init(){
for(int i=0;i<maxn;i++)
I.a[i][i]=1;
} int n,m; matrix multi(matrix A,matrix B){
matrix C;
for(int i=0;i<2*n;i++){
for(int j=0;j<2*n;j++){
for(int k=0;k<2*n;k++){
C.a[i][j]=(C.a[i][j]+A.a[i][k]*B.a[k][j]);
}
C.a[i][j]%=mod;
}
}
return C;
} matrix add(matrix A,matrix B){
matrix C;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
C.a[i][j]=(A.a[i][j]+B.a[i][j])%mod;
}
}
return C;
} int quick_mod(matrix A,int b){
matrix ans = I;
while(b){
if(b&1) ans = multi(ans,A);
b>>=1;
A=multi(A,A);
}
int sum = 0;
for(int i=0;i<n;i++){
for(int j=n;j<n*2;j++)
sum=sum+ans.a[i][j];
}
// cout<<"----------ans------------"<<endl;
// for(int i=0;i<2*n;i++){
// for(int j=0;j<2*n;j++)
// cout<<ans.a[i][j]<<" ";
// cout<<endl;
// }
// cout<<"----------ans------------"<<endl;
return sum%mod;
} int main()
{
init();
int t;
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&m);
matrix A,B;
for(int i=0;i<n;i++){
int k,u;
scanf("%d",&k);
while(k--){
scanf("%d",&u);
A.a[i][--u]=1;
}
}
for(int i=0;i<n;i++) A.a[i][i+n]=1;
for(int i=n;i<2*n;i++) A.a[i][i]=1;
// cout<<"----------A------------"<<endl;
// for(int i=0;i<2*n;i++){
// for(int j=0;j<2*n;j++)
// cout<<A.a[i][j]<<" ";
// cout<<endl;
// }
// cout<<"----------A------------"<<endl;
int sum = quick_mod(A,m);
printf("%d\n",sum+1);
}
return 0;
}

HDU5411CRB and Puzzle(矩阵高速幂)的更多相关文章

  1. hdu 5411 CRB and Puzzle 矩阵高速幂

    链接 题解链接:http://www.cygmasot.com/index.php/2015/08/20/hdu_5411/ 给定n个点 常数m 以下n行第i行第一个数字表示i点的出边数.后面给出这些 ...

  2. HDOJ 5411 CRB and Puzzle 矩阵高速幂

    直接构造矩阵,最上面一行加一排1.高速幂计算矩阵的m次方,统计第一行的和 CRB and Puzzle Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  3. hdu 5411 CRB and Puzzle (矩阵高速幂优化dp)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5411 题意:按题目转化的意思是,给定N和M,再给出一些边(u,v)表示u和v是连通的,问走0,1,2... ...

  4. HDU 5411 CRB and puzzle (Dp + 矩阵高速幂)

    CRB and Puzzle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) T ...

  5. UVA 11551 - Experienced Endeavour(矩阵高速幂)

    UVA 11551 - Experienced Endeavour 题目链接 题意:给定一列数,每一个数相应一个变换.变换为原先数列一些位置相加起来的和,问r次变换后的序列是多少 思路:矩阵高速幂,要 ...

  6. UVA10518 - How Many Calls?(矩阵高速幂)

    UVA10518 - How Many Calls?(矩阵高速幂) 题目链接 题目大意:给你fibonacci数列怎么求的.然后问你求f(n) = f(n - 1) + f(n - 2)须要多少次调用 ...

  7. HDU2842-Chinese Rings(递推+矩阵高速幂)

    pid=2842">题目链接 题意:求出最少步骤解出九连环. 取出第k个的条件是,k-2个已被取出,k-1个仍在支架上. 思路:想必九连环都玩过吧,事实上最少步骤就是从最后一个环開始. ...

  8. HDU2276 - Kiki &amp; Little Kiki 2(矩阵高速幂)

    pid=2276">题目链接 题意:有n盏灯.编号从1到n.他们绕成一圈,也就是说.1号灯的左边是n号灯.假设在第t秒的时候,某盏灯左边的灯是亮着的,那么就在第t+1秒的时候改变这盏灯 ...

  9. uva 10655 - Contemplation! Algebra(矩阵高速幂)

    题目连接:uva 10655 - Contemplation! Algebra 题目大意:输入非负整数,p.q,n,求an+bn的值,当中a和b满足a+b=p,ab=q,注意a和b不一定是实数. 解题 ...

随机推荐

  1. Linux Kernel(Android) 加密算法总结(一)(cipher、compress、digest)

    1. Linux内核支持哪些加密算法 ? 内核支持的加密算法非常多,包含: 对称加密算法.如AES,3DES. 对称password体制的发展趋势将以分组password为重点. 分组password ...

  2. the rendering library is more recent than your version of android studio

    近期更新了自己Android Studio中的SDK到最新版本号,AS的一部分配置改动了. 然后 在打开布局文件的时候 会出现 渲染错误 Rendering problem the rendering ...

  3. 启用QNX系统,海尔智能冰箱或成业界“宝马”

        智能家电正处于迅猛发展的态势,国内眼下有非常多企业都在积极布局智能家电,当中又以海尔最为典型.作为家电领域的领头羊,海尔近年来在智能家电领域的动作不小.近期有消息透露.海尔也许会在IFA展会上 ...

  4. Android 对话框(Dialog) 及 自己定义Dialog

    Activities提供了一种方便管理的创建.保存.回复的对话框机制,比如 onCreateDialog(int), onPrepareDialog(int, Dialog), showDialog( ...

  5. keras中使用预训练模型进行图片分类

    keras中含有多个网络的预训练模型,可以很方便的拿来进行使用. 安装及使用主要参考官方教程:https://keras.io/zh/applications/   https://keras-cn. ...

  6. [POI 2007] 旅游景点

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1097 [算法] 首先,用Dijkstra算法求出2-k+1到每个点的最短路 然后,我 ...

  7. 如何版本化你的API?--转

    原文地址:http://www.infoq.com/cn/news/2017/09/How-versioning-API 如何版本化API需要考虑各种实际业务场景,但是一个完备的API应该是: 和客户 ...

  8. QlikSense系列(1)——整体介绍

    接触QlikSense(3.1 SR1)已经快一年了,在此记录自己的经验心得,为想了解QlikSense的小伙伴提供一个参考. 1.产品介绍 Qlik公司以QlikView产品成名,QlikSense ...

  9. unwrap

    node.replaceWith(...node.childNodes);

  10. 关于数据未渲染完,要获取document高度问题——ajax全局事件

    昨天在做开发时,遇到这样一个问题,当页面刚加载的时候,就要获取document的高度,可是此时页面上所有的ajax请求的数据都还没有渲染到页面上,所以导致得到的document的高度仅仅是页面结构的高 ...