luogu3193 [HNOI2008]GT考试
#include <iostream>
#include <cstdio>
using namespace std;
int n, m, mod, nxt[25], too[25][15];
char ss[25];
struct Matrix{
int num[25][25];
Matrix operator*(const Matrix &u)const{
Matrix re;
for(int i=0; i<m; i++)
for(int j=0; j<m; j++){
re.num[i][j] = 0;
for(int k=0; k<m; k++)
re.num[i][j] = (re.num[i][j] + num[i][k]*u.num[k][j]) % mod;
}
return re;
}
}zhu, yua, dan;
void mknxt(){
int i=0, j;
j = nxt[0] = -1;
while(i<m){
if(j==-1 || ss[i]==ss[j]) nxt[++i] = ++j;
else j = nxt[j];
}
}
void mktoo(){
for(int i=0; i<m; i++)
for(int j=0; j<=9; j++){
too[i][j] = ss[i]==j+'0'?i+1:too[max(nxt[i],0)][j];
zhu.num[i][too[i][j]]++;
}
}
int main(){
cin>>n>>m>>mod;
scanf("%s", ss);
mknxt();
mktoo();
for(int i=0; i<m; i++)
dan.num[i][i] = 1;
yua.num[0][0] = 1;
while(n){
if(n&1) dan = dan * zhu;
zhu = zhu * zhu;
n >>= 1;
}
yua = yua * dan;
int ans=0;
for(int i=0; i<m; i++)
ans = (ans + yua.num[0][i]) % mod;
cout<<ans<<endl;
return 0;
}
luogu3193 [HNOI2008]GT考试的更多相关文章
- 1009: [HNOI2008]GT考试
1009: [HNOI2008]GT考试 Time Limit: 1 Sec Memory Limit: 162 MB Description 阿申准备报名参加GT考试,准考证号为N位数\(X_1X_ ...
- 【bzoj1009】[HNOI2008]GT考试
1009: [HNOI2008]GT考试 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 3018 Solved: 1856[Submit][Statu ...
- BZOJ_1009_[HNOI2008]_GT考试_(动态规划+kmp+矩阵乘法优化+快速幂)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1009 字符串全部由0~9组成,给出一个串s,求一个长度为n的串,不包含s的种类有多少. 分析 ...
- BZOJ 1009: [HNOI2008]GT考试( dp + 矩阵快速幂 + kmp )
写了一个早上...就因为把长度为m的也算进去了... dp(i, j)表示准考证号前i个字符匹配了不吉利数字前j个的方案数. kmp预处理, 然后对于j进行枚举, 对数字0~9也枚举算出f(i, j) ...
- [HNOI2008] GT考试
[HNOI2008] GT考试 标签 : DP 矩阵乘法 题目链接 题意 n位数中不出现一个子串的方案数. 题解 \(设dp[i][j]\)为前i位匹配到j时的合法方案数.(所谓合法,就是不能有别的匹 ...
- BZOJ_1009_[HNOI2008]GT考试_KMP+矩阵乘法
BZOJ_1009_[HNOI2008]GT考试_KMP+矩阵乘法 Description 阿申准备报名参加GT考试,准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考 ...
- BZOJ1009 [HNOI2008]GT考试 矩阵
去博客园看该题解 题目 [bzoj1009][HNOI2008]GT考试 Description 阿申准备报名参加GT考试,准考证号为N位数X1X2….Xn(0<=Xi<=9),他不希望准 ...
- BZOJ 1009 [HNOI2008]GT考试 (KMP + 矩阵快速幂)
1009: [HNOI2008]GT考试 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 4266 Solved: 2616[Submit][Statu ...
- bzoj1009 / P3193 [HNOI2008]GT考试
P3193 [HNOI2008]GT考试 设$f[i][j]$表示主串匹配到第$i$个位置,不吉利数字匹配到第$j$个位置 $g[i][j]$表示加上某数字使子串原来最多能匹配到第$i$个数字,现在只 ...
随机推荐
- java读取文件封装的一个类(有部分代码借鉴别人的)
package modbus.rtu.calc; import java.io.BufferedReader; import java.io.FileInputStream; import java. ...
- JAVA分包下项目部分代码存储
一.注册时姓名去重和符合汉字格式: // 新用户申请加入 public void NewHuman() { System.out.println("========新会员申请加入页面==== ...
- ABAP EXCEPTION
CX_ROOT | |--CX_STATIC_CHECK | |--CX_DYNAMIC_CHECK | | | |--CX_SY_ARITHMETIC_ERROR //运算 '&OPERAT ...
- 一把剪刀看懂git reset 和它的三个参数
都说git 命令难记且难懂,但是如果从立体的角度看待git与git管理的版本,那么一切都会明朗许多. 大多数的学习教程为了理解git,会绘制几个圆圈的串联,每个圆圈代表一个commit的版本,也就是从 ...
- 在DataGridView控件中显示图片
实现效果: 知识运用: DataGridView控件的DataSource属性 实现代码: private void Form1_Load(object sender, EventArgs e) { ...
- python基础一 day15 作业
3.处理文件,用户指定要查找的文件和内容,将文件中包含要查找内容的每一行都输出到屏幕def check_file(filename,aim): with open(filename,encoding= ...
- thinkphp 为什么访问路径错误,还可以访问
在学习中访问入口文件,实际上应该访问public\index\index\ 但其实也可以访问application.admin.controller\index,同样可以在网页下显示 原理:pub ...
- java基础—网络编程
一.网络基础概念 首先理清一个概念:网络编程 != 网站编程,网络编程现在一般称为TCP/IP编程.
- java基础—基础语法2
一.语句
- 新手 WordPress主题制作全过程
WordPress主题制作全过程(一):基础准备 前言: 我想大多数使用WordPress的朋友都喜欢去尝试新的主题,但是换来换去,总是找不到那么一款适合自己的,让人很郁闷.于是很多人萌生了修改现有主 ...