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

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

题解:

首先看到这道题n特别大,m很小,又有着很明显的状态转移,基本就可以看出这是一道矩阵优化dp题目了(终于不是在看完题解后再说了QAQ)

可以比较容易的看出状态转移,设f[i][j]表示长度为n的串匹配到了i,长度为m的串匹配到了j,预先处理m串的kmp,找到m串如何转移(我第一次写没有注意到需要处理kmp这回事,直接不符合的话转移到f[i][0]上,这样实际上是漏掉了情况);

然后构造一个使f[i]转移到f[i+1]的矩阵B,使f[i]*B=f[i+1];

然后用矩阵快速幂就行了;

代码:

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 #include
13 using namespace std;14 #define LL long long15 #define FILE "1"16 #define up(i,j,n) for(int i=j;i<=n;i++)17 #define down(i,n,j) for(int i=n;i>=j;i--)18 int n,m,k;19 const int maxn=30;20 char s[maxn];21 struct M{22 int v[maxn][maxn];23 M(){memset(v,0,sizeof(v));}24 friend M operator*(M a,M b){25 M c;26 for(int i=0;i
View Code

 //这样的矩阵乘法时间复杂度很高,如果矩阵乘法的内容比较少还是自己写个比较好

转载于:https://www.cnblogs.com/chadinblog/p/5907165.html

你可能感兴趣的文章
查看数据库表的数据量和SIZE大小的脚本修正
查看>>
SQLSERVER性能监控级别步骤
查看>>
SQL Server 执行计划利用统计信息对数据行的预估原理二(为什么复合索引列顺序会影响到执行计划对数据行的预估)...
查看>>
JS 禁止右键,禁止复制,禁止粘贴
查看>>
jquery.ui.accordion的修改(支持展开多个)
查看>>
【javascript基础】6、new与构造函数
查看>>
未能从文本"Template"创建 "System.Windows.DependencyProperty"
查看>>
黑马程序员--面向对象(一)封装、成员变量与局部变量、匿名对象、构造函数、this关键字...
查看>>
未能加载文件或程序集“Common”或它的某一个依赖项。试图加载格式不正确的程序...
查看>>
WebAPI通过multipart/form-data方式同时上传文件以及数据(含HttpClient上传Demo)
查看>>
C# webBrowser 获取元素class属性值
查看>>
百度地图API
查看>>
每天进步一点点 JavaScript之模态对话框及onload事件
查看>>
Linux下配置mysql数据库
查看>>
redis rdb
查看>>
介绍一个VC中代码缩进的工具
查看>>
转载VC6LineNumberAddin
查看>>
几个Servlet小Sample网站
查看>>
pb日志查看记录
查看>>
iOS 改变tableview cell的背景色
查看>>