点击打开链接

题意显然是 求 A+A^2+A^3+....+A^m

这就是经典题目 矩阵乘法十种经典题目

递归解决

后半部分提取 A^(m/2)

该题再特判下 m==1的时候

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int mod=2015;
struct mat
{int s[55][55];
};
int n;
void operator*=( mat &a,const mat &b)
{static mat c;int i,j,k;memset(c.s,0,sizeof(c));for(k=0; k<n; k++)for(i=0; i<n; i++)for(j=0; j<n; j++)c.s[i][j]+=a.s[i][k]*b.s[k][j];for(i=0; i<n; i++)for(j=0; j<n; j++)a.s[i][j]=c.s[i][j]%mod;
}
void operator+=( mat &a,const mat &b)
{int i,j,k;for(i=0; i<n; i++)for(j=0; j<n; j++){a.s[i][j]+=b.s[i][j];a.s[i][j]%=mod;}
}
mat ans,t;
mat quick(int m)
{mat x=t;memset(ans.s,0,sizeof(ans.s));for(int i=0;i<n;i++) ans.s[i][i]=1;for(int i=m;i;i>>=1,x*=x)if(i&1) ans*=x;return ans;
}
void print(mat x)
{for(int i=0;i<n;i++){for(int j=0;j<n;j++) printf("%d ",x.s[i][j]);puts("");}
}
int vis[100010];
mat solve(int m)
{if(m==1){return t;}mat res,out=solve(m/2);if(m&1){mat x=quick(m/2+1);res=x;res*=out;res+=out;res+=x;}else{mat x=quick(m/2);res=x;res*=out;res+=out;}return res;
}
int main()
{int T;scanf("%d",&T);while(T--){int w,k,x;scanf("%d%d",&n,&w);memset(t.s,0,sizeof(t.s));memset(ans.s,0,sizeof(ans.s));for(int i=0; i<n; i++){scanf("%d",&k);while(k--){scanf("%d",&x);t.s[i][x-1]=1;}}int res=0;mat ans=solve(w-1);for(int i=0;i<n;i++)for(int j=0;j<n;j++)res=res+ans.s[i][j];
//        print(ans);if(w==1)printf("%d\n",n+1);elseprintf("%d\n",(res+1+n)%mod);}return 0;
}
/*
*/

【矩阵快速幂】 HDU 5411 CRB and Puzzle 等比相关推荐

  1. hdu 5411 CRB and Puzzle(矩阵快速幂)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5411 解题思路: 题目大意: 给定n个点 常数m 下面n行第i行第一个数字表示i点的出边数,后面给出 ...

  2. 递推+矩阵快速幂 HDU 2065

    1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 5 using namespace ...

  3. HDU - 5411 CRB and Puzzle 矩阵快速幂

    HDU - 5411 考虑直接dp会T, 用矩阵优化一下就好了. #include<bits/stdc++.h> #define LL long long #define LD long ...

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

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

  5. HDU 5411 CRB and Puzzle (2015年多校比赛第10场)

    1.题目描写叙述:点击打开链接 2.解题思路:本题实际是是已知一张无向图.问长度小于等于m的路径一共同拥有多少条. 能够通过建立转移矩阵利用矩阵高速幂解决.当中,转移矩阵就是输入时候的邻接矩阵,同一时 ...

  6. hdu 5411 CRB and Puzzle

    Sample Input 1 3 2 1 2 1 3 0 Sample Output 6 Hint possible patterns are ∅, 1, 2, 3, 1→2, 2→3 解释样例: 第 ...

  7. 2015多校10 1006.CRB and Puzzle HDU5411(邻接矩阵求k长路条数,矩阵快速幂

    题意:有若干字符,现在要把它们连成一个字符串,每种字符后面只能接特定种类的字符,现在询问能连接出的长度小于等于m的字符串有多少种. 思路:我们可以把这个转移关系看成一个图,如果字符a后面可以接b,那么 ...

  8. HDU 6185 Covering 矩阵快速幂 递推

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6185 题目描述: 一个4*n的矩形, 你用1*2的矩形覆盖有多少种方案, n <= 1e18 ...

  9. hdu 5451 Best Solver 矩阵循环群+矩阵快速幂

    http://acm.hdu.edu.cn/showproblem.php?pid=5451 题意:给定x    求解 思路: 由斐波那契数列的两种表示方法, 之后可以转化为 线性表示 F[n] = ...

最新文章

  1. java 模仿支付成功_Java工程师薪资为何这么高?60W年薪如何轻松拿到手
  2. Nat. Mach. Intell. | 生物医学关系抽取的机器学习新框架
  3. 如何周密规划决策制定过程
  4. APICloud中app如何在手机端测试
  5. ITK:在二进制映像中标记Connect组件
  6. 选择时间日历控件DatePickerDialog实现(从外包项目中挖出来整理的)
  7. 用C++实现简单随机二元四则运算
  8. YOLOv4/v5的创新点汇总!
  9. 常见shader原理及实现(三)边缘查找,锐化,浮雕
  10. CREO图文教程:三维设计案例之一腔多模设计(定位参照零件导入模具模型)图文教程之详细攻略
  11. 游戏开发 | 基于 EasyX 库开发经典90坦克大战游戏
  12. 面试常见简单编程题目
  13. 视频问答社区VYou宣布关闭,问答社交模式会走向哪?
  14. python缺失值处理 fillna_python 处理缺失值
  15. 小米MAX3 线刷兼救砖_解账户锁_纯净刷机包_教程
  16. git clone时需要密码
  17. 2022年第一季度的十个Web3项目
  18. 手把手教你设置公众号菜单栏
  19. php gd图片验证,php笔记之GD库图片创建/简单验证码
  20. 力扣每日一题:878. 第 N 个神奇数字【二分法】

热门文章

  1. 使用memory analyzer分析堆栈内存优化poi excel导入方法
  2. 第二阶段(七)——Mybatis框架
  3. 思考的形状 《思维导图》读后感
  4. 架构本质解析-微博架构
  5. 自从有了它,我终于能完成我的学术论文了
  6. 每日笔记-2017/03/30
  7. 惯性测量单元(IMU)系列介绍(1)——加速度计简介
  8. php怎么给超链接设置样式,html中如何设置超链接的样式
  9. flash与字符串:字符串与属性
  10. 奠基计算机网络视频教学50小时完整版