[DP 矩阵快速幂] BZOJ 1875 [SDOI2009]HH去散步
来源:互联网 发布:海岛旅游小镇数据 编辑:程序博客网 时间:2024/05/29 06:35
一个DP
用矩阵快速幂加速
然后这个DP状态比较巧妙 以边作状态
#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>#define cl(x) memset(x,0,sizeof(x))using namespace std;inline char nc(){static char buf[100000],*p1=buf,*p2=buf;if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1==p2) return EOF; }return *p1++;}inline void read(int &x){char c=nc(),b=1;for (;!(c>='0' && c<='9');c=nc()) if (c=='-') b=-1;for (x=0;c>='0' && c<='9';x=x*10+c-'0',c=nc()); x*=b;}const int P=45989;const int M=125;struct Matrix{int a[M][M];int n;Matrix(){}Matrix(int _n,int i=0){n=_n; cl(a);if (i) for (int j=1;j<=n;j++) a[j][j]=1;}friend Matrix operator * (const Matrix &A,const Matrix &B){int n=A.n; Matrix ret(n);for (int i=1;i<=n;i++)for (int j=1;j<=n;j++)for (int k=1;k<=n;k++)(ret.a[i][j]+=A.a[i][k]*B.a[k][j]%P)%=P;return ret;}}A;struct edge{int u,v;edge(int u=0,int v=0):u(u),v(v) { }}edges[M];int tot=1;int n,m,round,S,T;inline Matrix Pow(Matrix a,int b){Matrix ret(a.n,1);for (;b;b>>=1,a=a*a)if (b&1)ret=ret*a;return ret;}int ans[M],Ans;int main(){int iu,iv;freopen("t.in","r",stdin);freopen("t.out","w",stdout);read(n); read(m); read(round); read(S); read(T); S++; T++;for (int i=1;i<=m;i++){read(iu); read(iv); iu++; iv++; edges[++tot]=edge(iu,iv); edges[++tot]=edge(iv,iu);}A=Matrix(tot);for (int i=2;i<=tot;i++){for (int j=2;j<=tot;j++){if ((i^1)==j) continue;if (edges[i].u==edges[j].v)A.a[i][j]=1;}if (edges[i].u==S)A.a[i][1]=1;}A=Pow(A,round);for (int i=1;i<=tot;i++){ans[i]=A.a[i][1];if (edges[i].v==T)(Ans+=ans[i])%=P;}printf("%d\n",Ans);return 0;}
0 0
- [DP 矩阵快速幂] BZOJ 1875 [SDOI2009]HH去散步
- BZOJ 1875 [SDOI2009]HH去散步 (矩阵快速幂)
- [数位DP+矩阵快速幂优化]BZOJ 1875——[SDOI2009]HH去散步
- bzoj 1875: [SDOI2009]HH去散步(矩阵优化DP)
- 【BZOJ】1875 [SDOI2009]HH去散步 DP+矩阵优化
- [BZOJ]1875: [SDOI2009]HH去散步 矩阵乘法优化DP
- BZOJ-1875 HH去散步 DP+矩阵乘法快速幂
- BZOJ-1875-HH去散步-SDOI2009-矩阵乘法
- BZOJ 1875 [SDOI2009]HH去散步 矩阵乘法
- bzoj 1875: [SDOI2009]HH去散步 动态规划+矩阵乘法
- [BZOJ1875][SDOI2009]HH去散步(矩阵快速幂)
- 【SDOI2009】HH去散步(矩阵快速幂)
- 【BZOJ 1875】 [SDOI2009]HH去散步
- 【47.40%】【BZOJ 1875】[SDOI2009]HH去散步
- BZOJ 1875 [SDOI2009] HH去散步
- bzoj 1875 [SDOI2009]HH去散步
- BZOJ 1875 [SDOI2009]HH去散步
- BZOJ 1875 [SDOI2009]HH去散步
- 文章标题
- 一起写一个 Web 服务器(2)
- perl 产生随机数
- BZOJ 1042: [HAOI2008]硬币购物 (dp + 容斥)
- java反射
- [DP 矩阵快速幂] BZOJ 1875 [SDOI2009]HH去散步
- SQL注入工具sqlmap使用手记
- 从Sprite3D理解3D骨骼动画原理
- TableViewCell中.m中的执行顺序
- LeetCode 024 Swap Nodes in Pairs
- 虚函数表(vtbl)和虚表指针(vptr)
- cocos2d-x3.2源码分析之 ---- 类FileUtils实现把资源放在Resources文件目录下达到多平台的引用
- Android Studio中常用设置与快捷键(android studio中Eclipse配置的快捷键)
- Yii2.0 初识 RESTful Serializer