博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[TJOI2017]可乐
阅读量:6280 次
发布时间:2019-06-22

本文共 1091 字,大约阅读时间需要 3 分钟。

题目大意:

  一个$n(n\le30)$个点$m(m\le100)$条边的无向图,每次可以选择移动到相邻点、原地不动或原地自爆。一开始在编号为$1$的点,问$t(t\le10^6)$秒后有多少种可能的行为方案?

思路:

  新建结点编号$0$表示原地自爆,则在原图基础上对于每个点加上自环和通向$0$的有向边,用邻接矩阵$T$表示。用矩阵$F$记录方案数,其中$F_{0,i}$表示最后一步在$i$处的方案数,初始状态$F_{0,1}=1$。用矩阵快速幂算出$F'=F\times T^t$,答案即为$\sum F'_{0,i}$。

1 #include
2 #include
3 #include
4 inline int getint() { 5 register char ch; 6 while(!isdigit(ch=getchar())); 7 register int x=ch^'0'; 8 while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0'); 9 return x;10 }11 const int N=31,mod=2017;12 int tmp[N][N];13 struct Matrix {14 int n,m,val[N][N];15 void resize(const int &n,const int &m) {16 this->n=n;17 this->m=m;18 }19 Matrix &operator *= (const Matrix another) {20 for(register int i=0;i
>=1,t*=t) {46 if(k&1) f*=t;47 }48 int ans=0;49 for(register int i=0;i<=n;i++) {50 (ans+=f.val[0][i])%=mod;51 }52 printf("%d\n",ans);53 return 0;54 }

 

转载于:https://www.cnblogs.com/skylee03/p/8779074.html

你可能感兴趣的文章
使用Swagger2构建强大的RESTful API文档(2)(二十三)
查看>>
Docker容器启动报WARNING: IPv4 forwarding is disabled. Networking will not work
查看>>
(转)第三方支付参与者
查看>>
程序员修炼之道读后感2
查看>>
DWR实现服务器向客户端推送消息
查看>>
js中forEach的用法
查看>>
Docker之功能汇总
查看>>
!!a标签和button按钮只允许点击一次,防止重复提交
查看>>
(轉貼) Eclipse + CDT + MinGW 安裝方法 (C/C++) (gcc) (g++) (OS) (Windows)
查看>>
还原数据库
查看>>
作业调度框架 Quartz.NET 2.0 beta 发布
查看>>
mysql性能的检查和调优方法
查看>>
项目管理中的导向性
查看>>
Android WebView 学习
查看>>
(转)从给定的文本中,查找其中最长的重复子字符串的问题
查看>>
HDU 2159
查看>>
spring batch中用到的表
查看>>
资源文件夹res/raw和assets的使用
查看>>
UINode扩展
查看>>
LINUX常用命令
查看>>