BZOJ4887:[TJOI2017]可乐(矩阵乘法)
Description
Input
Output
输出可乐机器人的行为方案数,答案可能很大,请输出对2017取模后的结果。
Sample Input
1 2
2 3
2
Sample Output
Solution
后来才发现这是个矩阵快速幂模板题……
把邻接矩阵做t次幂,邻接矩阵a[i][j]的意义就成了从i走到j的方案数
这个题只需要把每个点的自爆引一条单向边到n+1就好了,停留就连一条自环
Code
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #define MOD (2017) 5 using namespace std; 6 7 int n,m,ans,u,v,t; 8 9 struct Matrix 10 { 11 int m[32][32]; 12 void clear(){memset(m,0,sizeof(m));} 13 }A,G; 14 15 Matrix operator * (Matrix a,Matrix b) 16 { 17 Matrix ans; ans.clear(); 18 for (int i=1; i<=n+1; ++i) 19 for (int j=1; j<=n+1; ++j) 20 for (int k=1; k<=n+1; ++k) 21 (ans.m[i][j]+=a.m[i][k]*b.m[k][j])%=MOD; 22 return ans; 23 } 24 25 Matrix Qpow(Matrix a,int p) 26 { 27 Matrix ans; ans.clear(); 28 for (int i=1; i<=n+1; ++i) ans.m[i][i]=1; 29 while (p) 30 { 31 if (p&1) ans=ans*a; 32 a=a*a; p>>=1; 33 } 34 return ans; 35 } 36 37 int main() 38 { 39 scanf("%d%d",&n,&m); 40 for (int i=1; i<=m; ++i) 41 { 42 scanf("%d%d",&u,&v); 43 G.m[u][v]=G.m[v][u]=1; 44 } 45 for (int i=1; i<=n+1; ++i) 46 G.m[i][n+1]=1,G.m[i][i]=1; 47 scanf("%d",&t); 48 G=Qpow(G,t); 49 for (int i=1; i<=n+1; ++i) 50 (ans+=G.m[1][i])%=MOD; 51 printf("%d",ans); 52 }
转载于:https://www.cnblogs.com/refun/p/9380785.html
BZOJ4887:[TJOI2017]可乐(矩阵乘法)相关推荐
- 【bzoj4887】[Tjoi2017]可乐 矩阵乘法
题目描述 加里敦星球的人们特别喜欢喝可乐.因而,他们的敌对星球研发出了一个可乐机器人,并且放在了加里敦星球的1号城市上.这个可乐机器人有三种行为:停在原地,去下一个相邻的 城市,自爆.它每一秒都会随机 ...
- 洛谷P3758/BZOJ4887 [TJOI2017] 可乐 [矩阵快速幂]
洛谷传送门,BZOJ传送门 可乐 Time Limit: 10 Sec Memory Limit: 64 MB Submit: 299 Solved: 207 Description 加里敦星球的 ...
- bzoj4887: [Tjoi2017]可乐(矩阵乘法+快速幂)
题目传送门 . 解法: 这种题都是矩阵乘法吧. f[i][t]表示第t秒在i的方案. 那么f[i][t]可以转移f[i][t+1]和能够与i相连的边. 那么这个转移可以看作一个转移矩阵. 首先矩阵的( ...
- [TJOI2017]可乐(矩阵快速幂)
题目描述 加里敦星球的人们特别喜欢喝可乐.因而,他们的敌对星球研发出了一个可乐机器人,并且放在了加里敦星球的1号城市上.这个可乐机器人有三种行为: 停在原地,去下一个相邻的城市,自爆.它每一秒都会随机 ...
- 洛谷P3758 [TJOI2017]可乐
原题链接:洛谷P3758 [TJOI2017]可乐 题目描述 加里敦星球的人们特别喜欢喝可乐.因而,他们的敌对星球研发出了一个可乐机器人,并且放在了加里敦星球的1号城市上.这个可乐机器人有三种行为: ...
- 洛谷 P3758 [TJOI2017]可乐
洛谷 P3758 [TJOI2017]可乐 Description 加里敦星球的人们特别喜欢喝可乐.因而,他们的敌对星球研发出了一个可乐机器人,并且放在了加里敦星球的1号城市上.这个可乐机器人有三种行 ...
- 5分钟搞懂矩阵乘法的本质
大家好啊,我是董董灿. 很多与深度学习算法相关的面试,面试官可能都会问一类问题,那就是你是如何理解矩阵乘算法的. 更有甚者,会让你当场手写矩阵乘算法,然后问细节,问如何优化,面试现场,残忍至极. 那矩 ...
- 如何在CPU上优化GEMM矩阵乘法
如何在CPU上优化GEMM矩阵乘法 How to optimize GEMM on CPU (TL;DR) TVM 提供抽象接口,允许用户分别描述算法和算法的实现组织(所谓的调度).通常,在高性能调度 ...
- CPU的自动调度矩阵乘法
CPU的自动调度矩阵乘法 这是一个有关如何对CPU使用自动调度程序的文档. 与依靠手动模板定义搜索空间的基于模板的autotvm不同,自动调度程序不需要任何模板.用户只需要编写计算声明,而无需任何调度 ...
最新文章
- Android监听左右滑删除通知,Android 滑动监听RecyclerView线性流+左右划删除+上下移动...
- Core Animation
- jvm调优:GC日志格式
- 【Tools】Visual Studio 2017下载和安装
- winscp使用密钥登录远程linux系统
- 任正非采访的数据分析解读
- bzoj1051 受欢迎的牛 结论+tarjan
- java命令行执行编译好的类_Java命令行编译并执行Java程序
- Redis连接池Lettuce Jedis 区别
- Altium AD20大电流表层开窗,用特殊粘贴复制平面区域到其他层,阻焊开窗显示沉金LOGO
- 复合选择器-focus选择器(HTML、CSS)
- ba无标度网络python_python绘制BA无标度网络示例代码
- 智慧路灯控制系统解决方案
- 【学习】FaceForensics++: Learning to Detect Manipulated Facial Images
- 时空数据生成对抗网络研究综述(下)
- 自定义按键鼠标,献给电脑重度的江湖人
- postgresql 数据库健康巡检 报告
- 疫情重压下,屈臣氏为何上半年仍盈利?
- 微信企业号接入微信支付
- 使用Tesseract训练lang文件并OCR识别集装箱号