题目描述

加里敦星球的人们特别喜欢喝可乐。因而,他们的敌对星球研发出了一个可乐机器人,并且放在了加里敦星球的1号城市上。这个可乐机器人有三种行为:停在原地,去下一个相邻的
城市,自爆。它每一秒都会随机触发一种行为。现在给出加里敦星球城市图,在第0秒时可乐机器人在1号城市,问经过了t秒,可乐机器人的行为方案数是多少?

输入

第一行输入两个正整数N,M表示城市个数,M表示道路个数。(1≤N≤30,0≤M≤100)
接下来M行输入u,v表示u,v之间有一条道路。
(1≤u,v≤n)保证两座城市之间只有一条路相连。
最后输入时间t。1<t≤10^6

输出

输出可乐机器人的行为方案数,答案可能很大,请输出对2017取模后的结果。

样例输入

3 2
1 2
2 3
2

样例输出

8


题解

矩阵乘法

傻逼题,显然邻接矩阵自乘。对于停留,每个点连一个自环;对于自爆,每个点向虚拟节点连边,虚拟节点连自环。

矩阵的 $t$ 次幂的第一行的和即为答案。

时间复杂度 $O(n^3\log t)$

#include <cstdio>
#include <cstring>
int n;
struct data
{int v[35][35];data() {memset(v , 0 , sizeof(v));}int *operator[](int a) {return v[a];}data operator*(data &a){data ans;int i , j , k;for(i = 0 ; i <= n ; i ++ )for(k = 0 ; k <= n ; k ++ )for(j = 0 ; j <= n ; j ++ )ans[i][j] = (ans[i][j] + v[i][k] * a[k][j]) % 2017;return ans;}
}A;
data pow(data x , int y)
{data ans;int i;for(i = 0 ; i <= n ; i ++ ) ans[i][i] = 1;while(y){if(y & 1) ans = ans * x;x = x * x , y >>= 1;}return ans;
}
int main()
{int m , k , i , x , y , ans = 0;scanf("%d%d" , &n , &m);for(i = 1 ; i <= m ; i ++ ) scanf("%d%d" , &x , &y) , A[x][y] = A[y][x] = 1;for(i = 1 ; i <= n ; i ++ ) A[i][i] = A[i][0] = 1;A[0][0] = 1;scanf("%d" , &k) , A = pow(A , k);for(i = 0 ; i <= n ; i ++ ) ans = (ans + A[1][i]) % 2017;printf("%d\n" , ans);return 0;
}

转载于:https://www.cnblogs.com/GXZlegend/p/8681108.html

【bzoj4887】[Tjoi2017]可乐 矩阵乘法相关推荐

  1. BZOJ4887:[TJOI2017]可乐(矩阵乘法)

    Description 加里敦星球的人们特别喜欢喝可乐.因而,他们的敌对星球研发出了一个可乐机器人,并且 放在了加里敦星球的1号城市上.这个可乐机器人有三种行为:停在原地,去下一个相邻的 城市,自爆. ...

  2. 洛谷P3758/BZOJ4887 [TJOI2017] 可乐 [矩阵快速幂]

    洛谷传送门,BZOJ传送门 可乐 Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 299  Solved: 207 Description 加里敦星球的 ...

  3. bzoj4887: [Tjoi2017]可乐(矩阵乘法+快速幂)

    题目传送门 . 解法: 这种题都是矩阵乘法吧. f[i][t]表示第t秒在i的方案. 那么f[i][t]可以转移f[i][t+1]和能够与i相连的边. 那么这个转移可以看作一个转移矩阵. 首先矩阵的( ...

  4. [TJOI2017]可乐(矩阵快速幂)

    题目描述 加里敦星球的人们特别喜欢喝可乐.因而,他们的敌对星球研发出了一个可乐机器人,并且放在了加里敦星球的1号城市上.这个可乐机器人有三种行为: 停在原地,去下一个相邻的城市,自爆.它每一秒都会随机 ...

  5. 洛谷P3758 [TJOI2017]可乐

    原题链接:洛谷P3758 [TJOI2017]可乐  题目描述 加里敦星球的人们特别喜欢喝可乐.因而,他们的敌对星球研发出了一个可乐机器人,并且放在了加里敦星球的1号城市上.这个可乐机器人有三种行为: ...

  6. 洛谷 P3758 [TJOI2017]可乐

    洛谷 P3758 [TJOI2017]可乐 Description 加里敦星球的人们特别喜欢喝可乐.因而,他们的敌对星球研发出了一个可乐机器人,并且放在了加里敦星球的1号城市上.这个可乐机器人有三种行 ...

  7. 5分钟搞懂矩阵乘法的本质

    大家好啊,我是董董灿. 很多与深度学习算法相关的面试,面试官可能都会问一类问题,那就是你是如何理解矩阵乘算法的. 更有甚者,会让你当场手写矩阵乘算法,然后问细节,问如何优化,面试现场,残忍至极. 那矩 ...

  8. 如何在CPU上优化GEMM矩阵乘法

    如何在CPU上优化GEMM矩阵乘法 How to optimize GEMM on CPU (TL;DR) TVM 提供抽象接口,允许用户分别描述算法和算法的实现组织(所谓的调度).通常,在高性能调度 ...

  9. CPU的自动调度矩阵乘法

    CPU的自动调度矩阵乘法 这是一个有关如何对CPU使用自动调度程序的文档. 与依靠手动模板定义搜索空间的基于模板的autotvm不同,自动调度程序不需要任何模板.用户只需要编写计算声明,而无需任何调度 ...

最新文章

  1. PTA数据结构与算法题目集(中文)7-18
  2. 【学习笔记】SAP CO模块概念信息(下)
  3. swiper轮播器的常用案例分析(swiper hover停止mouseover停止)
  4. 分布式系统(微服务架构)的一致性和幂等性问题相关概念解析
  5. 杨元庆:出身中国是联想吸引国际用户的障碍
  6. python面试 hashmap是什么_面试不慌,看完保证让你写HashMap跟玩一样
  7. 转载 3年工作经验 面试大厂
  8. 设计模式 轮子哥的论点
  9. python实现判断一个字符串是否是合法IP地址
  10. nginx.conf文件配置及nginx重启脚本
  11. android studio 2048游戏
  12. SVN教程代码比较(图文教程)
  13. web前端进阶架构师之路
  14. HTML基础开头代码
  15. 淘宝奇门接口的签名方法
  16. 采蘑菇电脑c语言,英菲尼迪终于升级英菲尼迪Q50L,内行人告诉你怎么选还配备主动降噪、胎压显示!凯美瑞都比不上它! 早买早享受...
  17. PVZ系列六 | 僵尸动画转换
  18. codec2中的函数命名后缀vb nb sm
  19. 成功解决failed: The TLS connection was non-properly terminated
  20. Outer space invaders(代码源div.1 P5)

热门文章

  1. 微信小程序登录密码MD5加密
  2. 尼康相机测试软件mac版,尼康Webcam Utility
  3. 世界顶级人像摄影大师作品欣赏
  4. java 微信退款配置_微信支付退款配置
  5. iPhone固件下载地址
  6. Java面向对象8——抽象类和抽象方法(知识点+使用方法)
  7. linux6.5退出文档,Centos6.5及Linux基础命令和基础知识点笔记!6.25更新
  8. 道路标线提取方法论文总结
  9. Extjs 3.0.0 问题总结
  10. 应用8255A控制LED小灯开闭(附代码注释)