Codevs 4560 NOIP2015 D2T2 子串

> 4560 NOIP2015 D2T2 子串
 时间限制: 1 s
 空间限制: 128000 KB
 题目等级:黄金 Gold
题目描述 Description
有两个仅包含小写英文字母的字符串A和B。现在要从字符串A中取出k个互不重叠的非空子串,然后把这k个子串按照其在字符串A中出现的顺序依次连接起来得到一个新的字符串,请问有多少种方案可以使得这个新串与字符串B相等?注意:子串取出的位置不同也认为是不同的方案。
输入描述 Input Description
第一行是三个正整数n,m,k,分别表示字符串A的长度,字符串B的长度,以及问题描述中所提到的k,每两个整数之间用一个空格隔开。 
第二行包含一个长度为n的字符串,表示字符串A。 第三行包含一个长度为m的字符串,表示字符串B。
输出描述 Output Description
输出共一行,包含一个整数,表示所求方案数。由于答案可能很大,所以这里要求输出答案对1,000,000,007取模的结果。
样例输入 Sample Input
【Input1】
6 3 1 
aabaab 
aab
【Input2】
6 3 2 
aabaab 
aab
【Input3】
6 3 3 
aabaab 
aab
样例输出 Sample Output
【Output1】
2
【Output2】
7
【Output3】
7
数据范围及提示 Data Size & Hint
对于第1组数据:1≤n≤5001≤m≤50,k=1; 
对于第2组至第3组数据:1≤n≤5001≤m≤50,k=2; 
对于第4组至第5组数据:1≤n≤5001≤m≤50,k=m; 
对于第1组至第7组数据:1≤n≤5001≤m≤501≤k≤m; 
对于第1组至第9组数据:1≤n≤10001≤m≤1001≤k≤m; 
对于所有10组数据:1≤n≤10001≤m≤2001≤k≤m。
/*
方案数DP+滚动数组优化.
f[i][j][p][]表示A串前i个字符B串前j个字符组成k个贡献的方案数.
(最后一维对当前字符用不用讨论). 
当前考虑两种状态:两个字符相等.两个字符不等.
关于取模的问题相关:(a+b+c)%p=((a+b)%p+c)%p.
*/
#include<iostream>
#include<cstdio>
#define mod 1000000007
#define MAXN 1001
#define MAXM 201
using namespace std;
int f[2][MAXM][MAXM][2],n,m,k;
char s1[MAXN],s2[MAXM];
int read()
{int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9') {if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9')x=x*10+ch-48,ch=getchar();return x*f;
}
int main()
{n=read();m=read();k=read();for(int i=1;i<=n;i++)  cin>>s1[i];for(int i=1;i<=m;i++)  cin>>s2[i];f[0][0][0][0]=f[1][0][0][0]=1;for(int i=1;i<=n;i++)for(int j=1;j<=min(i,m);j++)for(int p=1;p<=k;p++){int now=i&1,last=(i-1)&1;if(s1[i]==s2[j]) f[now][j][p][1]=((f[last][j-1][p][1]+f[last][j-1][p-1][0])%mod+f[last][j-1][p-1][1])%mod,f[now][j][p][0]=(f[last][j][p][0]+f[last][j][p][1])%mod;else f[now][j][p][1]=0,f[now][j][p][0]=(f[last][j][p][0]+f[last][j][p][1])%mod;; }printf("%d",(f[n&1][m][k][0]%mod+f[n&1][m][k][1]%mod)%mod);return 0;
}

转载于:https://www.cnblogs.com/nancheng58/p/6070802.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/256718.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

方差和协方差的数据意义

方差和协方差 定义 方差 度量单个随机变量的离散程度&#xff0c;公式如下&#xff1a; 协方差 度量两个随机变量&#xff08;变化趋势&#xff09;的相似程度&#xff0c;定义如下&#xff1a;

Git 添加空文件夹的方法

http://stackoverflow.com/questions/115983/how-do-i-add-an-empty-directory-to-a-git-repositoryAnother way to make a directory stay empty (in the repo) is to create a .gitignore inside that directory that contains two lines: 在空目录下创建.gitignore文件。 文…

《CSS揭秘》学习demo:第三章 形状

这本书非常实用&#xff0c;我利用这一章所讲的技巧自己做了几个有意思的图标&#xff0c;每个图标都只用一个元素实现。 demo地址&#xff1a;http://codepen.io/Tutaizi/pen/akKQXo/转载于:https://www.cnblogs.com/tuzisxy/p/5715351.html

SAP ABAP规划 使用LOOP READ TABLE该方法取代双LOOP内部表的方法

如上&#xff0c;用双LOOP的方法实现两个内表匹配筛选性能不高&#xff0c;能够换成以下LOOP READ TABLE的方法 注意问题&#xff0c;gwa_vbap工作区READ TABLE之前需要排空。 版权声明&#xff1a;本文博主原创文章。博客&#xff0c;未经同意不得转载。 转载于:https://www.c…

memcpy(cv::Mat.data,unsigned char *,320x240),保存数据失真问题解决方法

1、memcpy&#xff08;unsigned char *C&#xff0c;cv::Mat.data A,,320x240)&#xff0c;首先A是图像完整的&#xff0c;通过copy到C中的时候&#xff0c;再copy到新的cv::Mat 图像的对象上时&#xff0c;图像发生失真 memcpy&#xff08;cv::Mat B.data,unsigned char *C,3…

有限元ansys/lsdyna学习笔记-组件component与组元part_02

详细链接&#xff1a;https://wk.baidu.com/view/d24db6db856a561252d36f99?ivk_sa1023194j

centos6.4与win7双系统时间同步错误解决办法

第一步&#xff1a;编辑/etc/sysconfig/clock文件&#xff0c;在文件末尾添加如下两行&#xff1a; UTCfalse ARCfalse 第二步&#xff1a;创建软链接&#xff0c;设置centos的时区为上海&#xff1a; ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 第三步&#xf…

调研Android的开发环境的发展演变

在 知道要做基于移动端的项目实践时&#xff0c;我就选定了Android&#xff0c;回来的时候查了很多相关的知识&#xff0c;很多人都在问开发安卓软件&#xff0c;使用eclipse还是用 Android studio&#xff1f;其实&#xff0c;也没有一个准确的答案&#xff0c;但是可以肯定的…

C++11 多线程库使用说明

多线程基础 1.1 进程与线程 根本区别&#xff1a; 进程是操作系统资源分配的基本单位&#xff0c;线程是任务调度和执行的基本单位 开销方面&#xff1a; 每个进程都有自己独立的代码和数据空间&#xff0c;程序之间的切换开销较大。 线程可以看作是轻量级的进程&#xff0c;同…

005 vim程序编辑器

1. 为何要学 vim 所有的 Unix Like 系统都会内建 vi 文本编辑器&#xff0c;其他的文书编辑器则不一定会存在&#xff1b;很多个别软件的编辑接口都会主动呼叫 vi (例如未来会谈到的 crontab, visudo, edquota 等指令)&#xff1b;vim 具有程序编辑的能力&#xff0c;可以主动…

Redis 实践笔记1---基础知识

前言 由于Redis的广泛使用&#xff0c;加上在项目中涉及到Redis&#xff0c;因此会根据自己的使用和学习&#xff0c;写一个Redis系列的博客&#xff0c;作为自己的笔记&#xff0c;同时也分享给大家。 What is Redis ? 看一下Redis的官网http://redis.io/对REDIS的描述&#…

[操作系统实验lab4]实验报告

实验概况 在开始实验之前&#xff0c;先对实验整体有个大概的了解&#xff0c;这样能让我们更好地进行实验。 我们本次实验需要补充的内容包括一整套以sys开头的系统调用函数&#xff0c;其中包括了进程间通信需要的一些系统调用如sys_ipc_can_recv等&#xff0c;以及补充完成f…

设计模式C++实践

1、单例模式 1&#xff09;饿汉士单例模式 2&#xff09;懒汉士单例模式

js中怎么写自执行函数

<!DOCTYPE html><html lang"en"><head> <meta charset"UTF-8"> <title></title> <script type"text/javascript"> /** * Window 是一个非常重要的对象 */ c…

最优化课堂笔记06-无约束多维非线性规划方法(含重点)

引言 6.1 坐标轮换法&#xff08;工程上基本不用&#xff0c;效率低不适用高维&#xff09; 6.1例子&#xff1a;主要是对最优步长alpha的确定 6.2 最速下降法&#xff08;相邻两次的搜索方向互相垂直&#xff09; 6.2例子 求解法一 注&#xff1a;最速下降法与坐标轮换法的区…

WINHEX的比较、同步功能加上NTFS对稀疏文件的支持

[原创]如何快速地分析RAID信息在每块盘上的记录方式&#xff0c;如何快速地确定系统的实质读写操作。WINHEX是一个非常好的软件&#xff0c;通过其比较和同步功能加上NTFS对稀疏文件的支持&#xff0c;看看怎么实现上述设想。。。我们会有这样的需求&#xff1a;在RAID上的几块…

Z表数据EXCEL导入

很多项目都有这种需求&#xff0c;虽然别人用的各有不同&#xff0c;不过闲来无事&#xff0c;还是自己搞了一个出来。基于EXCEL的导入。 *&---------------------------------------------------------------------* *& Report ZLY_UPLOAD_TABLE *& *&------…

运动轨迹规划算法专栏

1、全局局部路径规划&#xff0c;解决低速简单障碍物环境的路径规划功能