[Luogu 2678] noip15 子串

题目描述

有两个仅包含小写英文字母的字符串 A 和 B。现在要从字符串 A 中取出 k 个互不重叠的非空子串,然后把这 k 个子串按照其在字符串 A 中出现的顺序依次连接起来得到一 个新的字符串,请问有多少种方案可以使得这个新串与字符串 B 相等?注意:子串取出 的位置不同也认为是不同的方案。

输入输出格式

输入格式:

输入文件名为 substring.in。

第一行是三个正整数 n,m,k,分别表示字符串 A 的长度,字符串 B 的长度,以及问

题描述中所提到的 k,每两个整数之间用一个空格隔开。 第二行包含一个长度为 n 的字符串,表示字符串 A。 第三行包含一个长度为 m 的字符串,表示字符串 B。

输出格式:

输出文件名为 substring.out。 输出共一行,包含一个整数,表示所求方案数。由于答案可能很大,所以这里要求[b]输出答案对 1,000,000,007 取模的结果。

输入输出样例

输入样例#1:

6 3 1
aabaab
aab
输出样例#1:

2
输入样例#2:

6 3 2
aabaab
aab
输出样例#2:

7
输入样例#3:

6 3 3
aabaab
aab
输出样例#3:

7

说明

对于第 1 组数据:1≤n≤500,1≤m≤50,k=1;

对于第 2 组至第 3 组数据:1≤n≤500,1≤m≤50,k=2; 对于第 4 组至第 5 组数据:1≤n≤500,1≤m≤50,k=m; 对于第 1 组至第 7 组数据:1≤n≤500,1≤m≤50,1≤k≤m; 对于第 1 组至第 9 组数据:1≤n≤1000,1≤m≤100,1≤k≤m; 对于所有 10 组数据:1≤n≤1000,1≤m≤200,1≤k≤m。

Solution:

想必在考场上还是需要多多思考,不然一道并不难的DP都不一定做的出

这道其实方程的想到其实并不难,

f[i][j][k][0..1]表示s到第i位,t到第j位,使用了k个子串,第i位是否取

那么这个算算好像空间有些爆炸,那么再想想滚动

因为在转移时候当前状态只跟i-1的状态有关,因此就可以对i进行滚动

***虽然我并不是这么打的,但是我觉得这个状态更简单想到

 #include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
const int p=1e9+;
int n,m,K,ans=;
int f[][],g[][];
char s[],t[];
int main(){
scanf("%d%d%d",&n,&m,&K);
scanf("%s%s",s+,t+);
f[][]=g[][]=;
for (int i=;i<=n;++i)
for (int j=m;j>=;--j)
for (int k=;k<=K;++k){
if (s[i]!=t[j]) {f[j][k]=; continue;}
f[j][k]=(f[j-][k]+g[j-][k-])%p;
(g[j][k]+=f[j][k])%=p;
}
printf("%d",g[m][K]);
return ;
}

最新文章

  1. PHP正则表达式
  2. MySQL 数据库实现远程连接
  3. &lt;转载&gt;NPOI Excel 单元格背景颜色对照表
  4. javascript this 代表的上下文,JavaScript 函数的四种调用形式
  5. 设置Safari浏览器在标签栏上打开新窗口,而不是弹出一个新窗口
  6. JSP技术
  7. 使用Windows 系统性能监控来报警磁盘空间不足
  8. jQuery随记汇总
  9. ural 1352. Mersenne Primes
  10. phpstudy如何安装景安ssl证书 window下apache服务器网站https访问
  11. 【翻译】《向“弹跳球”演示程序添加新功能》 in MDN
  12. Android的fuzz测试技术之符号执行浅谈-android学习之旅(82)
  13. BZOJ4621 Tc605(动态规划)
  14. php的phar是什么?
  15. js 禁止f12、Ctrl +S 、右键
  16. Django的MVT模型
  17. 14.python-CS编程
  18. js实现页面遮罩层,并且阻止页面body滚动
  19. 060 关于Hive的调优(本身,sql,mapreduce)
  20. JS 浮点型计算的精度问题 推荐的js 库 推荐的类库 Numeral.js 和 accounting.js

热门文章

  1. Intellij IDEA神器居然还有这些小技巧---超级好用的
  2. 学渣乱搞系列之Tarjan模板合集
  3. 如何高效读写百万级的Excel?
  4. [bzoj1613][Usaco2008 Jan]Running贝茜的晨练计划_动态规划
  5. zoj——3557 How Many Sets II
  6. Spring-data-jpa 笔记(二) Repository 详解
  7. SpringMvc切面校验JavaBean及基础类型
  8. doT js模板入门 3
  9. Java中的equals()和hashCode()
  10. VS2012调试执行,网页打不开