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

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

1009: [HNOI2008]GT考试

Time Limit: 1 Sec  Memory Limit: 162 MB

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

设a[k][j]为k位后面加一个字母转移到j的方案数,于是:

我们发现k后面加一个字母转移到j可以用kmp实现。

这个式子是线性的,可以用矩阵优化。

#include#include
#include
#include
#include
#include
#include
using namespace std;#define inf 1000000007#define ll long long#define N 22#define F(i,r) for(i=0;i
>=1; }}char s[N];int nxt[N],ans;int main(){ scanf("%d%d%d%s",&n,&m,&p,s+1); for(int i=2,j=0;i<=m;i++) { while(j&&s[i]!=s[j+1]) j=nxt[j]; if(s[j+1]==s[i]) j++; nxt[i]=j; } for(int i=0;i

 

转载于:https://www.cnblogs.com/lkhll/p/7381750.html

你可能感兴趣的文章
修改设置中数据流量小部件开关跟设置中流量开关同步
查看>>
ubuntu下安装php+nginx+mysql
查看>>
开灯问题
查看>>
素数距离问题
查看>>
Spring Boot使用@Async实现异步调用:自定义线程池
查看>>
自定义指令directive基础用法
查看>>
netty学习笔记二——ByteBuf类原理
查看>>
整理 iOS 9 适配中出现的坑(图文)
查看>>
jq实现瀑布流效果
查看>>
css3 3D盒子效果
查看>>
如何在VS2010(VC10)下编译Pro*C OCCI 程序
查看>>
3.随机生成4位验证码,由用户输入并验证是否输入正确,如果输入错误就生成新的验证码让用户重新输入,最多输入5次...
查看>>
练习2 练习目标-使用引用类型的成员变量:在本练习中,将扩展银行项目,添加一个(客户类)Customer类。Customer类将包含一个Account对象。...
查看>>
产品叠加搜索
查看>>
GIT入门笔记(11)- 多种撤销修改场景和对策--实战练习
查看>>
bzoj1072: [SCOI2007]排列perm
查看>>
字符串加密
查看>>
Windows10远程连接错误-出现身份验证错误
查看>>
[redis]redis常用
查看>>
凑凑热闹,给eval做个科普.
查看>>