题目链接

没啥好说的,矩阵优化+$kmp$字符串匹配

上代码:

/**************************************************************
Problem: 1009
User: zhangheran
Language: C++
Result: Accepted
Time:116 ms
Memory:1300 kb
****************************************************************/ #include<iostream>
#include<cstdio>
//#include"suqingnian.h"
#include<algorithm>
#include<cstring>
using namespace std;
int next[];
int n,m;
int mod;
char a[];
long long ans;
void nxt()
{
for(int i=;i<=m;i++)
{
int t=next[i-];
while(t&&a[i]!=a[t+]) t=next[t];
t+=(a[i]==a[t+]),next[i]=t;
}
return ;
}
struct Martix{
long long num[][];
friend Martix operator *(const Martix &a,const Martix &b)
{
Martix c;
memset(c.num,,sizeof(c.num));
for(int k=;k<m;k++)
for(int i=;i<m;i++)
for(int j=;j<m;j++)
c.num[i][j]=(c.num[i][j]+a.num[i][k]*b.num[k][j]%mod)%mod;
return c;
}
void hint(){memset(num,,sizeof(num));for(int i=;i<m;i++) num[i][i]=;}
void clear(){memset(num,,sizeof(num));}
}p;
void kmp()
{
nxt();
for(int j=;j<=;j++)
for(int k=;k<m;k++){
int t=k;
while(t&&a[t+]!=j+'') t=next[t];
if(a[t+]==j+'') t++;
p.num[k][t]++;
}
}
Martix
_pow(Martix _a,int _b)
{
Martix _res;_res.hint();
for(;_b;_b >>= , _a= _a * _a )
if(_b & ) _res = _res * _a ;
return _res ;
}
int main()
{
scanf("%d%d%d",&n,&m,&mod);
scanf("%s",a+);
kmp();
p=_pow(p,n);
// for(int i=0;i<m;i++,puts(""))
// for(int j=0;j<m;j++)
// printf("%lld ",p.num[i][j]);
for(int i=;i<m;i++) ans=(ans+p.num[][i])%mod;
printf("%lld",ans%mod);
return ;
}

bzoj1009GT考试的更多相关文章

  1. BZOJ1009GT考试 DP + KMP + 矩陣快速冪

    @[DP, KMP, 矩陣快速冪] Description 阿申准备报名参加GT考试,准考证号为\(N\)位数\(X_1 X_2 .. X_n(0 <= X_i <= 9)\),他不希望准 ...

  2. 全网独家MongoDB Certified DBA Associate考试认证视频

    该视频意在让所有学员一次通过考试,避免重复考试而承担的巨额考试费用! 目前MongDB发展迅猛,有赶超mysql,和oracle看齐的苗头.在这个时候MongoDB也适时的推出了官方的认证考试&quo ...

  3. 记lrd的高二上学期第五次调研考试

    河北某某中学的调研考试其实是很好玩的经历呢.可惜没有太多机会了. 背景: NOIP2016回来之后没有好好学文化课-.自习能翘就翘了,衡中特产学案自助没有好好写(说来我好像从来没被老师查到过,上课写学 ...

  4. 1009: [HNOI2008]GT考试

    1009: [HNOI2008]GT考试 Time Limit: 1 Sec Memory Limit: 162 MB Description 阿申准备报名参加GT考试,准考证号为N位数\(X_1X_ ...

  5. mysql练习题-查询同时参加计算机和英语考试的学生的信息-遁地龙卷风

    (-1)写在前面 文章参考http://blog.sina.com.cn/willcaty. 针对其中的一道练习题想出两种其他的答案,希望网友给出更多回答. (0) 基础数据 student表 +-- ...

  6. js封装用户选项传递给Servlet之考试系统二

    <%@ page language="java" import="java.util.*" contentType="text/html; ch ...

  7. js动态生成选项之考试系统(一)

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  8. 分享一个LiteDB做的简单考试系统辅助工具

    凌晨,被安排在公司值班,因为台风“灿鸿”即将登陆,风力太大,办公楼,车间等重要部分需要关注.所以无聊,那就分享一下,今天给朋友临时做的一个小的考试系统辅助工具吧.其实非常小,需求也很简单,但是可以根据 ...

  9. CCF考试

    第八次CCF考试记录 代码还不知道对不对,过两天出成绩. 成绩出来了,310分. 100+100+100+10+0: 考试13:27开始,17:30结束,提交第4题后不再答题,只是检查前四题的代码 第 ...

随机推荐

  1. 2018/4/26 python文件处理方式

    目录 2018/4/26总结 1. 如果有一天群内问题总结: 问题:python2和python3的默认编码是什么? 2. python学习总结: python的处理文件方式 2018/4/26总结 ...

  2. Fog

    [Fog] Fog parameters are controlled with Fog command. Fogging blends the color of the generated pixe ...

  3. 浅谈Java中set.map.List的区别

    就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...

  4. [C++] struct memory allocation

    MAX-byte alignment (最大单位对齐) typedef struct user USER; typedef struct employee E; struct user{ ]; //t ...

  5. Greeplum 系列(四) 实战

    Greeplum 系列(四) 实战 表结构 (1) 拉链表结构 create table public.member_fatdt0 ( member_id varchar(64), phoneno v ...

  6. LWIP数据包管理

  7. servletConfig的应用

    在Servlet的配置文件中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数. 当servlet配置了初始化参数后,web容器在创建servlet实例对象 ...

  8. mongodb 更新操作

    db.aaaa.update({},{$push:{money:{$each:[8,9,10],$slice:-4}}}) db.aaaa.update({},{$addToSet:{money:{$ ...

  9. 查看HDFS集群信息

    clusterID:集群ID,必须保持一致 1)在NameNode上查看 cat $HADOOP_HOME/dfs/name/current/VERSION #Fri Apr 18 11:56:57 ...

  10. jmeter监控内存,CPU等方法

    方法1: 使用插件来监控CPU,内存等的使用情况 1.需要的插件准备 JMeterPlugins-Standard-1.4.0.zip , JMeterPlugins-Extras-1.4.0.zip ...