[矩阵快速幂优化DP]BZOJ 4037——Str
来源:互联网 发布:自己的域名 编辑:程序博客网 时间:2024/06/01 21:29
题目梗概
你有一个长度为
定义
你可以将这个数字串分割成若干个数字(允许前导0),将他们的
比如
已知字符串和m后求答案对
解题思路
对于
假设我们将S分解为
于是我们就能得到DP,
但是
推DP时不断更新
#include<cstdio>#include<cstring>#define LL long long#define cl(x) memset(x,0,sizeof(x))using namespace std;const int tt=998244353;int a[505],n,m;struct jz{ LL x[10][10]; jz(int t=0){cl(x);if (t) for (int i=1;i<=m;i++) x[i][i]=1;} jz operator*(const jz &b)const{ jz c; for (int i=1;i<=m;i++) for (int j=1;j<=m;j++) for (int k=1;k<=m;k++) (c.x[i][j]+=x[i][k]*b.x[k][j])%=tt; return c; } jz operator+(const jz &b)const{ jz c; for (int i=1;i<=m;i++) for (int j=1;j<=m;j++) c.x[i][j]=(x[i][j]+b.x[i][j])%tt; return c; } void print(){ for (int i=1;i<=m;i++){ for (int j=1;j<=m;j++) printf("%lld ",x[i][j]); printf("\n"); } }}F[15][505],f[505];int main(){ freopen("exam.in","r",stdin); freopen("exam.out","w",stdout); char ch=getchar(); while (ch<'0'||ch>'9') ch=getchar(); while (ch>='0'&&ch<='9') a[++n]=ch-48,ch=getchar(); scanf("%d",&m); for (int i=0;i<=n;i++) F[0][i]=jz(1); for (int i=1;i<=m;i++) for (int j=1;j<=m;j++) F[1][0].x[i][j]=i==1||i==j+1; for (int i=1;i<=n;i++){ F[1][i]=jz(1); for (int j=1;j<11;j++) F[1][i]=F[1][i]*F[1][i-1]; } for (int i=2;i<=9;i++) for (int j=0;j<=n;j++) F[i][j]=F[i-1][j]*F[1][j]; f[0]=jz(1); for (int i=1;i<=n;i++){ jz now=F[a[i]][0]; for (int j=i-1;j>=0;j--){ f[i]=f[i]+f[j]*now; if (j) now=now*F[a[j]][i-j]; } } printf("%lld\n",f[n].x[1][1]); return 0;}
阅读全文
0 0
- [矩阵快速幂优化DP]BZOJ 4037——Str
- [数位DP+矩阵快速幂优化]BZOJ 1875——[SDOI2009]HH去散步
- BZOJ 4417: [Shoi2013]超级跳马【矩阵快速幂优化dp
- BZOJ 1009 KMP+矩阵快速幂优化DP
- BZOJ 1009 KMP,DP,矩阵快速幂
- [矩阵快速幂 DP] BZOJ 4037 [HAOI2015]数字串拆分 & BZOJ 2323 [ZJOI2011]细胞
- HDU 5318 (dp+矩阵快速幂优化)
- BZOJ 1009 KMP思想 + DP + 矩阵快速幂
- 【bzoj】3329: Xorequ 【DP】【快速幂&&矩阵乘法】
- BZOJ-1875 HH去散步 DP+矩阵乘法快速幂
- [DP 矩阵快速幂] BZOJ 1875 [SDOI2009]HH去散步
- BZOJ 1009 GT考试 KMP+DP+矩阵快速幂
- BZOJ 1009 GT考试 DP+矩阵快速幂
- BZOJ 3329: Xorequ 数位DP+矩阵快速幂
- BZOJ 1009-GT考试(kmp+矩阵快速幂+DP)
- bzoj 4818: [Sdoi2017]序列计数(DP+矩阵快速幂)
- bzoj 3329: Xorequ(DP+矩阵快速幂)
- 从快速幂到dp 优化:矩阵快速幂
- Spring框架-第四弹
- MVC设计模式
- Maven常用插件
- 生活日记2
- STL set
- [矩阵快速幂优化DP]BZOJ 4037——Str
- 02Redis数据类型之String 和Hash
- Factorization Machines 学习笔记(一)预测任务(转)
- 常见前端Js框架汇总
- KMP-字符串匹配
- vue项目开发中better-scroll在移动端开发案例
- Annotation类
- HDU
- 在myeclipse创建一个java的类