bzoj1875: [SDOI2009]HH去散步
来源:互联网 发布:淘宝网小商品 编辑:程序博客网 时间:2024/05/16 07:44
传送门
首先我们发现t特别大,n特别小。
这启示我们用矩阵乘法做。
设f[i][j]表示从i到j的方案数。
显然这是支持矩阵乘法的。
时间复杂度O(N^3*logT)
#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cstdlib>#define ll long longusing namespace std;int n,m,T,s,t,x,y,ans,tot=2,head[130];struct matrix{ int a[130][130]; void clear(){memset(a,0,sizeof(a));}}ppp,qqq,rrr,sss;matrix mult(matrix x,matrix y){ matrix z; z.clear(); for (int i=0;i<tot;i++) for (int j=0;j<tot;j++) for (int k=0;k<tot;k++) z.a[i][j]=(z.a[i][j]+x.a[i][k]*y.a[k][j])%45989; return z;}matrix pow(matrix c,int x){ matrix b; b.clear(); for (int i=0;i<tot;i++) b.a[i][i]=1; while (x){ if (x&1) b=mult(b,c); c=mult(c,c); x/=2; } return b;}struct edge{int to,next;}e[150];inline void add(int x,int y){ e[tot].to=y; e[tot].next=head[x]; head[x]=tot; tot++;}int main(){ memset(head,-1,sizeof(head)); scanf("%d%d%d%d%d",&n,&m,&T,&s,&t); for (int i=1;i<=m;i++){ scanf("%d%d",&x,&y); add(x,y); add(y,x); } for (int i=head[s];i!=-1;i=e[i].next) ppp.a[0][i]=1; for (int i=2;i<tot;i++){ int v=e[i].to; for (int j=head[v];j!=-1;j=e[j].next) if (i!=(j^1)) qqq.a[i][j]=1; } rrr=pow(qqq,T-1); sss=mult(ppp,rrr); ans=0; for (int i=0;i<tot;i++) if (e[i].to==t) ans=(ans+sss.a[0][i])%45989; printf("%d",ans);}
阅读全文
0 0
- [BZOJ1875] [SDOI2009] HH去散步
- 【bzoj1875】【SDOI2009】【HH去散步】
- 【SDOI2009】【BZOJ1875】HH去散步
- bzoj1875: [SDOI2009]HH去散步
- [bzoj1875][SDOI2009]HH去散步
- BZOJ1875: [SDOI2009]HH去散步
- bzoj1875: [SDOI2009]HH去散步
- bzoj1875: [SDOI2009]HH去散步
- [题解]bzoj1875(SDOI2009)HH去散步
- bzoj1875 [SDOI2009]HH去散步(矩阵)
- bzoj1875 HH去散步
- 【Bzoj1875】HH去散步
- bzoj1875 HH去散步
- BZOJ1875 [SDOI2009]HH去散步(矩阵乘法)
- 【bzoj1875】 SDOI2009 HH去散步 dp+矩阵乘法
- Bzoj1875: [SDOI2009]HH去散步:邻接矩阵的幂
- [BZOJ1875][SDOI2009]HH去散步(矩阵快速幂)
- 【BZOJ1875】[SDOI2009]HH去散步(矩阵乘法)
- 【FreeMaker】利用freemaker生成word版报表
- 简单说 正则表达式——要注意lastIndex属性
- SC(Siacoin)挖矿教程
- HTML+css进阶学习摘录(标签语义化)(一)
- OGRE lod 技术的使用,LOD模型生成及手动设置LOD级别
- bzoj1875: [SDOI2009]HH去散步
- 实战1--应用EL表达式访问JavaBean的属性
- 大臣的旅费
- opencv打开摄像头
- hibernate 与 mybatis 的区别
- Unity常用的设计模式_工厂模式系列之简单工厂模式
- 改变android状态栏颜色
- hdu 5015 233 Matrix (矩阵快速幂)
- 背包问题总