博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 1009: [HNOI2008]GT考试
阅读量:5313 次
发布时间:2019-06-14

本文共 665 字,大约阅读时间需要 2 分钟。

1009: [HNOI2008]GT考试

Time Limit: 1 Sec  Memory Limit: 162 MB
Submit: 3437  Solved: 2110
[][][]

Description

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

他的不吉利数学A1A2...Am(0<=Ai<=9)有M位,不出现是指X1X2...Xn中没有恰好一段等于A1A2...Am. A1和X1可以为0

Input

  第一行输入N,M,K.接下来一行输入M位的数。 N<=10^9,M<=20,K<=1000

Output

  阿申想知道不出现不吉利数字的号码有多少种,输出模K取余的结果.

Sample Input

4 3 100
111

Sample Output

81

HINT

 

Source

 
[ ][ ][ ]

 

 

看到N的范围肯定想矩阵快速幂,按照套路,先构造DP,然后考虑用矩阵快速加速。

 

f[i][j]表示选好了前i位数,当前串匹配到不详串的第j个字符,此时的方案数。

考虑向后的转移,无非就是枚举下一个数字是什么,有10种选择,其中一种会向f[i+1][j+1]转移,其余的根据KMP的next[]转移即可。

 

因为不详串最多20,所以转移边长度不会超过20,构造一个20x20的转移矩阵做快速幂好了。

 

@Author: YouSiki

转载于:https://www.cnblogs.com/yousiki/p/6411843.html

你可能感兴趣的文章
c#与java中byte字节的区别及转换方法
查看>>
A WebBrowser Toy
查看>>
用MyXls生成Excel报表(C#)
查看>>
了解WP的传感器
查看>>
阅读笔记 火球——UML大战需求分析 2
查看>>
Python 之父撰文回忆:为什么要创造 pgen 解析器?
查看>>
acedEvaluateLisp函数的反汇编
查看>>
Linux无线工具详解(Wireless tools for Linux)
查看>>
ACM PKU 2328 http://acm.pku.cn/JudgeOnline/problem?id=2328
查看>>
VB.NET 制作DLL动态库文件
查看>>
RSS阅读器
查看>>
Java语言基础——数据类型
查看>>
新建一个去除storyboard的项目
查看>>
webpack热更新 同时导出文件到本地
查看>>
微信电脑版不断崩溃
查看>>
js链式调用
查看>>
The connection to adb is down, and a severe error has occured
查看>>
牛腩新闻系统(二)——原型图、数据库文档
查看>>
数字统计
查看>>
asp.net 文件操作小例子(创建文件夹,读,写,删)
查看>>