[LUOGU] P2679 子串
一开始用一个f数组转移,发现不太对,状态有重叠部分
f[i][j][k]表示考虑了s的前i位,匹配到t的第j位,用了k个子串,且s的第i位必选
g[i][j][k]表示考虑了s的前i位,匹配到t的第j位,用了k个子串,且s的第i位必不选
考虑i的前一位:前一位选(作为结尾),前一位选(不作为结尾),前一位不选
f[i][j][k]=f[i-1][j-1][k]+f[i-1][j-1][k-1]+g[i-1][j-1][k-1]
第i位不选时继承状态
g[i][j][k]=g[i-1][j][k]+f[i-1][j][k]
滚动数组省一维
#include<iostream>
#include<cstring>
#include<cstdio>
#define int long long
using namespace std; inline int rd(){
int ret=,f=;char c;
while(c=getchar(),!isdigit(c))f=c=='-'?-:;
while(isdigit(c))ret=ret*+c-'',c=getchar();
return ret*f;
} const int MAXN=;
const int MOD=;
int n,m,num; char s[MAXN],t[MAXN];
int f[][MAXN][MAXN],g[][MAXN][MAXN]; signed main(){
n=rd();m=rd();num=rd();
scanf("%s%s",s+,t+);
s[]='a';t[]='b';
g[][][]=;
for(int i=;i<=n;i++){
g[i&][][]=;
for(int j=;j<=m&&j<=i;j++){
for(int k=;k<=num;k++){
f[i&][j][k]=g[i&][j][k]=;
g[i&][j][k]=(g[(i-)&][j][k]+f[(i-)&][j][k])%MOD;
if(s[i]==t[j]){
f[i&][j][k]=(f[(i-)&][j-][k-]+f[(i-)&][j-][k]+g[(i-)&][j-][k-])%MOD;
}else{
f[i&][j][k]=;
}
}
}
}
cout<<(f[n&][m][num]+g[n&][m][num])%MOD;
return ;
}
[LUOGU] P2679 子串的更多相关文章
- Luogu P2679 子串(字符串+dp)
P2679 子串 题意 题目描述 有两个仅包含小写英文字母的字符串\(A\)和\(B\). 现在要从字符串\(A\)中取出\(k\)个互不重叠的非空子串,然后把这\(k\)个子串按照其在字符串\(A\ ...
- 洛谷 P2679 子串 解题报告
P2679 子串 题目描述 有两个仅包含小写英文字母的字符串\(A\)和\(B\). 现在要从字符串\(A\)中取出\(k\)个互不重叠的非空子串,然后把这\(k\)个子串按照其在字符串\(A\)中出 ...
- P2679 子串 DP
P2679 子串 DP 从字符串A中取出\(k\)段子串,按原顺序拼接,问存在多少个方案使拼接的字符串与字符串B相同 淦,又是这种字符串dp 设状态\(ans[i][j][k]\)表示A串位置\(i\ ...
- 【Luogu】P2679子串(DP)
题目链接 GuessYCB的题解讲的很棒.就这样. 因为这题我不会,而题解又讲的太全太详细太好了. #include<cstdio> #include<cctype> #inc ...
- P2679 子串
http://www.luogu.org/problem/show?pid=2679 题目描述 有两个仅包含小写英文字母的字符串 A 和 B.现在要从字符串 A 中取出 k 个互不重叠的非空子串,然后 ...
- Luogu 2679 子串 (动态规划)
Luogu 2679 NOIP 2015 子串 (动态规划) Description 有两个仅包含小写英文字母的字符串 A 和 B.现在要从字符串 A 中取出 k 个互不重叠的非空子串,然后把这 k ...
- 洛谷P2679 子串——DP
题目:https://www.luogu.org/problemnew/show/P2679 DP水题: 然而被摆了一道,下面加 // 的地方都是一开始没写好的地方...还是不周密: 仔细审题啊... ...
- [NOIP2015] 提高组 洛谷P2679 子串
题目背景 无 题目描述 有两个仅包含小写英文字母的字符串 A 和 B.现在要从字符串 A 中取出 k 个互不重叠的非空子串,然后把这 k 个子串按照其在字符串 A 中出现的顺序依次连接起来得到一 个新 ...
- luogu 2679 子串
子串 史上最简短的一篇博客,毕竟看题解ac心疼我的kmp /* f[i][j][k][0/1]表示A的前i个,B的前j个,用到了k个子串,当前字符选或者不选. 所以f[0][0][0][0]的方案数为 ...
随机推荐
- spark sql 对接 HDFS
上一篇博客我向大家介绍了如何快速地搭建spark run on standalone,下面我将介绍saprk sql 如何对接 hdfs 我们知道,在spark shell 中操作hdfs 上的数据是 ...
- PJzhang:国内常用威胁情报搜索引擎说明
猫宁!!! 参考链接: https://www.freebuf.com/column/136763.html https://www.freebuf.com/sectool/163946.html 如 ...
- ADO学途 two day
代码实现的参照性在学习程序中占了关键比重,最基本的都一直无法运行成功,那就无法深入 研究.实现winfrom功能的要点之一实践中获取原理:不清楚代码的一些原理,即使copy过来,大多也 存无法运行的情 ...
- IDEA快捷的添加包名
Intellij IDEA使用(十四)—— 在IDEA中创建包(package)的问题 2018年02月24日 17:24:49 _云卷云舒_ 阅读数:6264 标签: intellij idea 更 ...
- iOS集成支付宝支付
本文由本人原创发表于博客园,转载请注明出处 http://www.cnblogs.com/wangqw/p/5074907.html 一. 开发前准备 iOS 支付宝SDK下载地址:(内含iOS An ...
- PostgreSQL - 查询表结构和索引信息
前言 PostgreSQL的表一般都是建立在public这个schema下的,假如现在有个数据表t_student,可以用以下几种方式来查询表结构和索引信息. 使用\d元命令查看表字段信息和索引信息 ...
- traceback异常打印
traceback模块 traceback模块被用来跟踪异常返回信息. 如下例所示: import traceback try: raise SyntaxError, "traceback ...
- Eclipse Mars.2集成Maven 3.5.4
准备材料: Eclipse Mars.2 Release (4.5.2): 官网戳:https://www.eclipse.org/downloads/ Maven 3.5.4: http://ma ...
- functools模块中的函数
Python自带的functools模块提供了一些常用的高阶函数,也就是用于处理其它函数的特殊函数.换言之,就是能使用该模块对可调用对象进行处理.functools模块函数概览functools.cm ...
- 如何加快HTML页面加载速度
1. 页面减肥 a. 页面的肥瘦是影响加载速度最重要的因素. b. 删除不必要的空格.注释. c. 将inline的script和css移到外部文件. d. 可以使用HTML Tidy来给HTML减肥 ...