题目链接

  将每个点拆成时刻1~9,然后根据题目要求连边,比如i-j有一条权为x的边就从点i-x向点j-1连一条边,表示经过x次之后可以到达。

  然后就矩阵快速幂乱搞就好了。

  

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cctype>
#include<cstdlib>
#define maxn 105
#define mod 2009
using namespace std;
inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} int lim; struct Matrix{
long long s[maxn][maxn];
void clear(){memset(s,,sizeof(s)); }
}; Matrix operator *(Matrix a,Matrix b){
Matrix ans; ans.clear();
for(int i=;i<=lim;++i)
for(int j=;j<=lim;++j)
for(int k=;k<=lim;++k) ans.s[i][j]=(ans.s[i][j]+a.s[i][k]*b.s[k][j]%mod)%mod;
return ans;
} Matrix Pow(Matrix a,long long b){
Matrix ret; ret.clear();
for(int i=;i<=maxn;++i) ret.s[i][i]=;
while(b){
if(b&) ret=ret*a;
a=a*a;
b>>=;
}
return ret;
} int n; int calc(int a,int b){ return a+(b-)*n; } char c[maxn]; int main(){
Matrix sta; sta.clear();
n=read();long long t=read();lim=n*;
for(int i=;i<=n;++i){
for(int j=;j<;++j) sta.s[calc(i,j)][calc(i,j+)]++;
scanf("%s",c+);
for(int j=;j<=n;++j){
int x=c[j]-'';
if(x==) continue;
for(int k=;k+x-<=;++k) sta.s[calc(i,x+k-)][calc(j,+k-)]++;
}
}
sta=Pow(sta,t);
//for(int i=1;i<=lim;++i,printf("\n"))
// for(int j=1;j<=lim;++j) printf("%lld ",sta.s[i][j]);
printf("%lld",sta.s[][n]);
return ;
}

最新文章

  1. CSRF 攻击介绍
  2. div在浏览器窗口中居中
  3. ASP.NET MVC 获取当前访问域名
  4. Linq专题之Linq查询from子句
  5. (Ios 实战) 自定义UITableView
  6. SVN hooks强制提交时填写日志
  7. z-index总结【转载http://www.cnblogs.com/mind/archive/2012/04/01/2198995.html】
  8. 综合经验:IO读写错误必然导致程序崩溃
  9. [Ext JS 4] 实战之 Picker 和 Picker Field
  10. Angularjs -- 核心概念
  11. 基于ASIO的协程与网络编程
  12. 第三篇:RESTful介绍
  13. OSGi-简介(01)
  14. 图像检索(6):局部敏感哈希索引(LSH)
  15. asp.net mvc前台显示带htm标签的解决办法(Razor —@Html.Raw())
  16. ExtJS学习之MessageBox
  17. butter
  18. TLS/HTTPS 证书生成与验证
  19. 关于Q-LEARNING的优化
  20. [tools]hugo&amp;github构建静态网站/百度统计

热门文章

  1. python_71_json序列化1
  2. JZOJ 5818. 【NOIP提高A组模拟2018.8.15】 做运动
  3. Python入门必学:递归函数正确的操作使用方法,案例详解
  4. django之配置静态文件
  5. vncserver 启动停止方式
  6. 2017 United Kingdom and Ireland Programming(Gym - 101606)
  7. Codeforces Round #461 (Div. 2) D. Robot Vacuum Cleaner
  8. python os模块进程函数
  9. Python及其常用模块库下载及安装
  10. 1568: [JSOI2008]Blue Mary开公司(超哥线段树)