了了已久的心结

f[i][j]表示到第i为,长度为j的后缀与不吉利数字的前缀相同,其实这个和一些期望概率的DP类似,利用a数组记录当前j在加上不同的数字之后,可以分别转移至那些状态,用KMP处理一下,然后矩阵快速幂就行了

Code

 1 #include <cmath>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cstdlib>
 5 #include <iostream>
 6 #include <algorithm>
 7 using namespace std;
 8 typedef long long LL;
 9 int n,m,mod;
10 char s[25];
11 int nxt[30];
12 LL a[30][30];
13 void Getnxt(){
14     nxt[0]=-1;
15     int i=0,j=-1;
16     while(i<m){
17         if(j==-1 || s[i]==s[j]){
18             i++; j++;
19             nxt[i]=j;
20         }
21         else j=nxt[j];
22     }
23 }
24 void Geta(){
25     for(int i=0;i<m;i++){
26         for(int j=0;j<=9;j++){
27             char c='0'+j;
28             int tmp=i+1;
29             while(tmp!=-1 && s[tmp]!=c) tmp=nxt[tmp];
30             if(tmp==-1) a[i+1][0]=(a[i+1][0]+1)%mod;
31             else a[i+1][tmp+1]=(a[i+1][tmp+1]+1)%mod;
32          }
33     }
34     a[0][1]=1; a[0][0]=9;
35 }
36 LL f[30];
37 LL d[30];
38 void cheng1(){
39     memset(d,0,sizeof(d));
40     for(int i=0;i<m;i++){
41         for(int j=0;j<m;j++){
42             d[j]+=f[i]*a[i][j];
43             d[j]%=mod;
44         }
45     }
46     memcpy(f,d,sizeof(d));
47 }
48 LL e[30][30];
49 void cheng2(){
50     memset(e,0,sizeof(e));
51     for(int i=0;i<m;i++){
52         for(int j=0;j<m;j++){
53             for(int k=0;k<m;k++){
54                 e[i][j]+=a[i][k]*a[k][j];
55                 e[i][j]%=mod;
56             }
57         }
58     }
59     memcpy(a,e,sizeof(a));
60 }
61 void DP(){
62     int b=n;
63     f[1]=1; f[0]=9;
64     b--;
65     while(b){
66         if(b&1) cheng1();
67         b=b>>1; cheng2();
68     }
69     LL ans=0;
70     for(int i=0;i<m;i++){
71         ans+=f[i]; ans%=mod;
72     }
73     cout<<ans<<endl;
74 }
75 int main(){
76     scanf("%d%d%d",&n,&m,&mod);
77     scanf("%s",&s);
78     Getnxt();
79     Geta();
80     DP();
81
82 }

View Code

转载于:https://www.cnblogs.com/FOXYY/p/7677660.html

BZOJ[1009] [HNOI2008]GT考试相关推荐

  1. BZOJ 1009 [HNOI2008]GT考试

    1009: [HNOI2008]GT考试 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 2154  Solved: 1327 [Submit][Sta ...

  2. bzoj 1009: [HNOI2008]GT考试(dp+kmp+矩阵快速幂)

    1009: [HNOI2008]GT考试 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 3932  Solved: 2398 [Submit][Sta ...

  3. BZOJ 1009:[HNOI2008]GT考试

    题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=1009 大意:给一个长度不大于20的数字串,求长度为N(10^9)的所有数字串中不包含该串 ...

  4. BZOJ 1009: [HNOI2008]GT考试(kmp+dp+矩阵优化)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1009 题意: 思路: 真的是好题啊! 对于这种题目,很有可能就是dp,$f[i][j]$表示分析到第 ...

  5. BZOJ_1009_[HNOI2008]_GT考试_(动态规划+kmp+矩阵乘法优化+快速幂)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1009 字符串全部由0~9组成,给出一个串s,求一个长度为n的串,不包含s的种类有多少. 分析 ...

  6. BZOJ 1005: [HNOI2008]明明的烦恼

    BZOJ 1005: [HNOI2008]明明的烦恼 Description 自从明明学了树的结构,就对奇怪的树产生了兴趣......给出标号为1到N的点,以及某些点最终的度数,允许在 任意两点间连线 ...

  7. GT考试(bzoj 1009)

    Description 阿申准备报名参加GT考试,准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字. 他的不吉利数学A1A2...Am(0< ...

  8. BZOJ 1009 GT考试 (AC自动机 + 矩阵乘法加速dp)

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1009 题意: 准考证号为\(n\)位数\(X_1X_2....X_n(0<=X_ ...

  9. [bzoj1009](HNOI2008)GT考试 (kmp+矩阵快速幂加速递推)

    Description 阿 申准备报名参加GT考试,准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字.他的不吉利数学 A1A2...Am(0&l ...

最新文章

  1. 谢文睿:西瓜书 + 南瓜书 吃瓜系列 8. 软间隔与支持向量回归
  2. 来呀!AI喊你斗地主——首个搞定斗地主的深度神经网络
  3. pat1079+1086+1090+1094(树的遍历)感想
  4. 开发技巧-使用SQL与Navicat快速导出一个自定义的MYSQL数据库字段表格(数据字典)为Word或Excel
  5. 巨人网络:已组建研发团队对元宇宙游戏开展自研探索
  6. linux PHP ppt 转图片,php(thinkphp)在linux系统下pdf转png图片【转】
  7. 红黑树真的没你想的那么难!
  8. Vue 中的 v-cloak 作用及用法
  9. python绘制多边形_在python-matplotlib中绘制3D多边形
  10. 配备 Apple T2 安全芯片的 Mac 电脑怎样用U盘装系统
  11. python交互式shell之jupyter notebook初步安装使用
  12. 百度的“知心搜索”揭秘
  13. MFC界面开发帮助文档:BCG可视化设计器使用指南
  14. 电商网站开发设计方案、电商网站开发重要性
  15. 复制pdf文本出现大量换行的解决办法
  16. dell云存储服务器,dell云存储服务器(戴尔存储服务器)
  17. 软著申请技巧及注意事项
  18. 在工业生产安全管理中,人员定位系统能做什么?
  19. 【Datawhale组队学习Pytorch】Task 完结篇
  20. 网站SEO从入门到精通

热门文章

  1. Spring Web Flow 入门demo(二)与业务结合 附源码
  2. (8)hibernate四种继承映射
  3. webService学习3:客户端生成webservice代码
  4. JAVAEE框架之Spring JdbcTemplate
  5. C#期末考试题,图书系统
  6. 产品小白的知识点1——用户周期
  7. java web项目在tomcat中以调试模式运行
  8. DualGan 学习笔记
  9. 数据可视化(三)- Seaborn简易入门
  10. Elasticsearch过滤与聚合的先后顺序java实现