Description

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

Input

第一行是三个正整数,分别表示字符串的长度,字符串的长度,以及问题描述中所提到的,每两个整数之间用一个空格隔开。

第二行包含一个长度为的字符串,表示字符串

第三行包含一个长度为的字符串,表示字符串

Output

输出共一行,包含一个整数,表示所求方案数。

由于答案可能很大,所以这里要求输 出答案对取模的结果。

Sample Input

6 3 2
aabaab
aab

Sample Output

7

HINT

Solution

表示中的个子串与相等的方案数(0表示不取,1表示取)

滚动数组优化空间复杂度.

#include<cmath>
#include<ctime>
#include<stack>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define M 205
#define N 1005
#define K 1000000007
using namespace std;
int f[2][M][M][2],n,m,k;
char a[N],b[M];
inline void init(){scanf("%d%d%d%s%s",&n,&m,&k,a+1,b+1);f[0][0][0][0]=1;for(int i=1,p,q;i<=n;++i){p=i&1;q=p^1;f[p][0][0][0]=1;for(int j=1;j<=m;++j)for(int l=1;l<=k;++l){f[p][j][l][0]=(f[q][j][l][0]+f[q][j][l][1])%K;if(a[i]==b[j]) f[p][j][l][1]=((f[q][j-1][l][1]+f[q][j-1][l-1][0])%K+f[q][j-1][l-1][1])%K;else f[p][j][l][1]=0;}}printf("%d\n",(f[n&1][m][k][0]+f[n&1][m][k][1])%K);
}
int main(){freopen("str.in","r",stdin);freopen("str.out","w",stdout);init();fclose(stdin);fclose(stdout);return 0;
}

转载于:https://www.cnblogs.com/AireenYe/p/6083675.html

[vijos1982][NOIP2015]子串相关推荐

  1. [NOIP2015] 子串

    题目描述 有两个仅包含小写英文字母的字符串 A 和 B.现在要从字符串 A 中取出 k 个互不重叠的非空子串,然后把这 k 个子串按照其在字符串 A 中出现的顺序依次连接起来得到一 个新的字符串,请问 ...

  2. [NOIP2015]子串

    Luogu2679 /* 思路清晰: 1.状态 2.转移方程:哪些状态相互影响/记忆化搜索思想 3.循环顺序 4.优化*/ #include<bits/stdc++.h>using nam ...

  3. 【动态规划】字符串类型动态规划

    这里总结一下字符串类型的动态规划问题,一般涉及最值问题,方案数问题都可以使用动态规划来解决 最短编辑距离 这个问题显然是一个最优解问题,对于最优解问题我们可以考虑动态规划解题,因此我们得先考虑子问题, ...

  4. [比赛|考试] 9月第一周的考试

    Sept 8th Sat 牛客网普及组赛(360pts/400pts)(100/100/100/60) T1水题不放代码,来个链接 T2乱膜膜就行了,注意膜出来是0要变成N,还有开longlong比较 ...

  5. codevs 4560 NOIP2015 D2T2 子串

    传送门 题目描述 Description 有两个仅包含小写英文字母的字符串A和B.现在要从字符串A中取出k个互不重叠的非空子串,然后把这k个子串按照其在字符串A中出现的顺序依次连接起来得到一个新的字符 ...

  6. 【NOIP2015提高组】子串 区间DP+滚动数组优化

    题意: 有两个仅包含小写英文字母的字符串 A 和 B. 现在要从字符串 A 中取出 k 个互不重叠的非空子串,然后把这 k 个子串按照其在字符串 A 中出现的顺序依次连接起来得到一个新的字符串. 请问 ...

  7. Redis 笔记(03)— string类型(设置key、获取key、设置过期时间、批量设置获取key、对key进行加减、对key值进行追加、获取value子串)

    字符串 string 是 Redis 最简单的数据结构.Redis 所有的数据结构都是以唯一的 key 字符串作为名称,然后通过这个唯一 key 值来获取相应的 value 数据.不同类型的数据结构的 ...

  8. 寻找一个字符串的重复子串 后缀数组

    什么是后缀数组 令字符串 S=S[1]S[2]...S[n]S=S[1]S[2]...S[n]{\displaystyle S=S[1]S[2]...S[n]} , S[i,j]S[i,j]{\dis ...

  9. leetcode 3. Longest Substring Without Repeating Characters 最长非重复子串的长度 滑动窗口法

    题目链接 根据我们之前介绍的滑动窗口法的解法: 滑动窗口法详解 leetcode 438. Find All Anagrams in a String 滑动窗口法 这题,我们不难解决,使用之前的模板. ...

最新文章

  1. RabbitMQ 主题(Topic)
  2. oracle对象之存储函数
  3. JS 删除 cookie
  4. Python的Django框架中forms表单类的使用方法详解
  5. Ethercat解析(九)之过程数据
  6. 沉痛哀悼雷霄骅博士!
  7. dpdk对虚拟化的支持
  8. (pattern),(?:pattern),(?=pattern)(?!pattern)不明白,让我豁然开朗的文章
  9. 创奇文书档案管理软件 V8.1
  10. 影视/动漫 短视频专栏来啦!
  11. 电脑快捷修改计算机名
  12. finalcut剪切快捷键_Final Cut Pro 笔记(一) 常用快捷键与技巧
  13. 中国工业钩环市场深度研究分析报告
  14. 安卓原生应用开发!一起刷完了这份1307页的安卓面试宝典吧,值得收藏!
  15. 单片机软件常用设计分享(二)驱动设计之LED灯显示设计
  16. JS实现将汉字转成拼音实例
  17. linux每日命令(23):find命令之xargs
  18. CentOS7下安装lnmp一键安装包
  19. Unity 实战项目 ☀️| 接入科大讯飞语音SDK(一)如何在科大讯飞平台搞到SDK!系列共两万多字超级新手教程!
  20. Check Box的详细用法

热门文章

  1. python可哈希_Python,TypeError:不可哈希类型:'list'
  2. qt 判断路径非英文符号与非英文字符_Qt中,软件多语言国际化翻译的方法与步骤...
  3. python读取文件每行_python – 在文本文件中的每4行读取,编辑和写入
  4. python+Django 完成第一个后端项目--创建投票应用(一)
  5. 双时隙的工作原理_双作用叶片泵工作原理是怎样的?作为8年工程师都没了解这么深...
  6. android权限申请方法,安卓开发Android6+权限申请管理用户拒绝权限一键解决方案...
  7. element tree树组件default-expand-all属性设置默认展开的节点
  8. androidtv item获取焦点设置动画和背景_动画技术的交互应用所作的动画
  9. python和.net的区别_c#教程之.net和C#的区别
  10. pythonexcel计算横列总和-在python中,如何在字典中找到值的总和?每个键都有多个值...