hdu 5411 多校——矩阵快速幂模板
来源:互联网 发布:数据工具培训心得 编辑:程序博客网 时间:2024/06/04 19:20
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N = 52;long long ans=0;struct Mat { int mat[N][N];};int num[N];int n, m;Mat a;void init() { int i,j; int x,k; memset(a.mat,0,sizeof(a.mat)); for(i = 1; i <= n; ++i) { cin>>x; for (j=1;j<=x;j++) { cin>>k; a.mat[i][k]=1; } } for (i=1;i<=n+1;i++) a.mat[i][n+1]=1;}Mat operator * (Mat a, Mat b) { Mat c; memset(c.mat,0,sizeof(c.mat)); int i, j, k; for(k = 1; k <=n; ++k) { for(i = 1; i <=n; ++i) { //*** for(j = 1; j <=n; ++j) { //*** c.mat[i][j] = (c.mat[i][j]+a.mat[i][k] * b.mat[k][j])%2015; } } } return c;}Mat operator ^ (Mat a, int k) { Mat c; int i, j; for(i = 1; i <=n; ++i) for(j = 1; j <=n; ++j) c.mat[i][j] = (i == j); for(; k; k >>= 1) { if(k&1) c = c*a; a = a*a; } return c;}int main(){ int T; cin>>T; while(T--) { cin>>n>>m; init(); n++; int k,i,j; Mat c; c=a^(m-1); long long ans=0; for (i=1;i<=n;i++) for (j=1;j<=n;j++) { ans=(ans+c.mat[i][j])%2015; } cout<<ans<<endl; } return 0;}
0 0
- hdu 5411 多校——矩阵快速幂模板
- 矩阵乘法+快速幂——【模板】矩阵快速幂
- hdu 2604 矩阵快速幂模板题
- hdu 1005 矩阵快速幂模板题
- hdu 1575 矩阵快速幂模板题
- 矩阵快速幂——HDU 2604
- 矩阵快速幂——HDU 2157
- 矩阵快速幂——HDU 2604
- 矩阵快速幂——HDU 4565
- HDU 5411(矩阵快速幂)
- 矩阵快速幂模板
- 矩阵快速幂--模板
- 矩阵快速幂 模板
- 矩阵快速幂模板
- 矩阵快速幂模板
- 【矩阵快速幂模板】
- 矩阵快速幂模板
- 矩阵快速幂模板
- eclipse自动补全的设置
- 多线程 - 02.利用pthread实现多线程
- Allegro过孔打在焊盘上(via与pad重叠),如何显示DRC错误?
- Android-自定义发送/接收广播(BroadcastReceiver)
- extern 修饰全局变量深度全方位剖析
- hdu 5411 多校——矩阵快速幂模板
- Light oj 1138 - Trailing Zeroes (III) 【二分查找 && N!中末尾连续0的个数】
- 多线程 - 03.NSThread使用
- 03 java.lang.Boolean
- awaitTermination() shutdown()
- File:迭代读取文件夹下的文件或者文件夹
- [iOS]上下文的理解
- 数据库如何给含有外键的表中插入数据?
- 以前是行不通的,做事先做人