正题

题目链接:https://www.luogu.com.cn/problem/P2679


题目大意

长度为nnn的字符串AAA和长度为mmm的字符串BBB,要求从AAA中截取kkk个不重复的非空子串使得他们按顺序拼接起来是字符串BBB。求方案数。


解题思路

设fi,j,k,0/1f_{i,j,k,0/1}fi,j,k,0/1​表示AAA到第iii个位置,BBB到第jjj个位置,目前截取了kkk段,这个位置iii有没有被截取时的方案数。转移显然
时间复杂度O(nmk)O(nmk)O(nmk)


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int XJQ=1e9+7;
ll n,m,k,f[2][201][201][2];
char a[1100],b[1100];
int main()
{scanf("%lld%lld%lld",&n,&m,&k);scanf("%s",a+1);scanf("%s",b+1);f[0][0][0][0]=1;for(ll i=1;i<=n;i++){memset(f[i&1],0,sizeof(f[i&1]));for(ll j=0;j<=m;j++)for(ll k=0;k<=m;k++){if(j&&a[i]==b[j]){if(k)(f[i&1][j][k][1]+=f[~i&1][j-1][k-1][0])%=XJQ;if(k)(f[i&1][j][k][1]+=f[~i&1][j-1][k-1][1])%=XJQ;(f[i&1][j][k][1]+=f[~i&1][j-1][k][1])%=XJQ;}(f[i&1][j][k][0]+=f[~i&1][j][k][0])%=XJQ;(f[i&1][j][k][0]+=f[~i&1][j][k][1])%=XJQ;}}printf("%lld",(f[n&1][m][k][0]+f[n&1][m][k][1])%XJQ);
}

P2679-子串【dp】相关推荐

  1. 洛谷 P2679 子串 【dp神题】【滚动数组】【2015 noip d2t2】

    偷个懒,题解看这里:https://www.luogu.org/problemnew/solution/P2679 看作者 GuessYCB  写的 ===2018.9.6=== 这一次算理解深一点了 ...

  2. wannafly 12 删除子串 dp

    原文:https://www.cnblogs.com/genius777/p/8636661.html 删除子串 题目描述  给你一个长度为n且由a和b组成的字符串,你可以删除其中任意的部分(可以不删 ...

  3. luogu P2679——子串

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

  4. BZOJ 4032 luogu P4112 [HEOI2015]最短不公共子串 (DP、后缀自动机)

    这其实是道水题... 题目链接: (bzoj)https://www.lydsy.com/JudgeOnline/problem.php?id=4032 (luogu)https://www.luog ...

  5. 洛谷P2679 子串

    放题解 题目传送门 放代码 转载于:https://www.cnblogs.com/liuyuxinblog/p/10799140.html

  6. 【做题记录】DP 杂题

    P2577 [ZJOI2004]午餐 $\texttt{solution}$ 想到贪心: 吃饭慢的先打饭节约时间, 所以先将人按吃饭时间从大到小排序. 状态: \(f[i][j]\) 表示前 \(i\ ...

  7. 最大公共子序列、子串、可重叠重复子串

    最长公共子序列 寻找两个给定序列的子序列,该子序列在两个序列中以相同的顺序出现,但是不必要是连续的 举例:X=ABCBDAB,Y=BDCABA.序列 BCA是X和Y的一个公共子序列,但不是X和Y的最长 ...

  8. leetcode算法题--最长回文子串

    题目链接:https://leetcode-cn.com/problems/longest-palindromic-substring/ 相关题目:最长回文子序列 动态规划 dp[i][j]表示从i到 ...

  9. 动态规划-最长回文子串

    输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案. 示例 2:输入: "cbbd" 输出 ...

  10. leetcode--5. 最长回文子串

    给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab" 注意: &qu ...

最新文章

  1. Oracle时间函数
  2. 《Android游戏开发详解》一2.16 区分类和对象
  3. 好看的网页图片分割切换动画特效源码
  4. 腾讯社交广告转化率预估初探
  5. 加密Python脚本
  6. angularjs sill 创建项目_AngularJS快速上手,从安装到运行
  7. 树莓派 | Debian更改屏幕分辨率 或 解决树莓派使用HDMI-VGA转换器黑屏的方案
  8. Mac电脑下载软件的几个网站
  9. VS2008创建C++项目
  10. cnn app for android phones,Freedom Apk Download for Android Phones / Tablets Latest Version
  11. 洛谷 3373 线段树
  12. SpringBoot使用JWT集成Ng-Alain之Token失效处理
  13. ipp协议 打印机 c语言,使用IPP(Internet打印协议)或LPR(行式打印机远程)在android中打印文件...
  14. str(n)cpy的注意事项以及memset的简单使用
  15. 大数据缓存管理系统设计与实现
  16. 计算机指令集的相关概念
  17. 动量守恒和角动量守恒结果不同可能原因
  18. linux下使用迅雷的完美办法(免费)
  19. 工大助手电费查询接口讲解
  20. HCIP第十四天笔记

热门文章

  1. 线性跟驰模型 matlab,Bierley非线性跟驰模型特性仿真分析
  2. 移动计算机怎么开机密码,win7忘记开机密码解决办法
  3. 访问Web服务器时 使用的协议是,使用SOAP协议访问Web服务
  4. python 服务端框架_GitHub - edisonlz/fastor: Python服务端开发框架-极易上手,超出你的想象!...
  5. tensorflow打印模型图_从Tensorflow模型文件中解析并显示网络结构图(pb模型篇)...
  6. linux find查找文件然后删除,linu查找find命令及删除7天前的文件
  7. java swing 面试题_下面有关JAVA swing的描述,说法错误的是?
  8. [Spring5]IOC容器_Bean管理XML方式_自动装配
  9. [C++11]initializer_lisr模板类的使用
  10. [剑指offer]面试题35:第一个只出现一次的字符