CF-477C(Dreamoon and Strings)

题目链接

题意

两个串S,TS,TS,T,问SSS中删除[1,∣S∣][1,|S|][1,∣S∣]个字符之后,最多有多少个不重叠的T串

思路

dpdpdp

dp[i][j]dp[i][j]dp[i][j]: 位置iii前删除jjj个字符之后的最大值

deldeldel: 表示位置iii前至少删除多少个字符出现串TTT

dp[i][j]=max(dp[i−1][j],dp[i−∣T∣−del]+1)dp[i][j] = max(dp[i-1][j], dp[i-|T|-del]+1)dp[i][j]=max(dp[i−1][j],dp[i−∣T∣−del]+1)

#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e3 + 5;
const int inf = 0x3f3f3f3f;
char s[maxn], t[maxn];
int lens, lent;
int dp[maxn][maxn];
int calc(int x) {if (x < lent) return inf;int len = lent, cnt = 0;while (len && x) {if (s[x] == t[len]) x--, len--;else cnt++, x--;}if (len == 0) return cnt;else return inf;
}
int main() {scanf("%s%s", s+1, t+1);lens = strlen(s+1);lent = strlen(t+1);for (int i = 1; i <= lens; ++i) {int del = calc(i);for (int j = 0; j <= i; ++j) {dp[i][j] = max(dp[i][j], dp[i-1][j]);if (i-lent-del < j-del || j-del < 0) continue;if(j-del >= 0) dp[i][j] = max(dp[i][j], dp[i-lent-del][j-del]+1);}}for (int i = 0; i <= lens; ++i) printf("%d ", dp[lens][i]);return 0;
}

CF-477C(Dreamoon and Strings) DP相关推荐

  1. CF#764(div.3A~D)dp进阶

    CF#764(div.3A~D)&&dp进阶 CF#764(div.3) Problem - A - Codeforces 题意 一个数列,每次操作可以使这个数列中的任何数加1,问最少 ...

  2. 2021牛客多校5 - Double Strings(dp+组合数学)

    题目链接:点击查看 题目大意:给出两个字符串 sss 和 ttt,要求 "一段相同的前缀" + "一个不同的字符(满足s[i]<t[j])"+ " ...

  3. CodeForces - 336D Vasily the Bear and Beautiful Strings(dp+组合数学)

    题目链接:点击查看 题目大意:给出一个 01 字符串,规定求值的过程如下: 每次选择末尾的两个数字: 如果为 0 0 ,那么替换成一个 1 否则替换成一个 0 循环往复,直至只剩一个数字位置,剩下的数 ...

  4. CF 55D Beautiful numbers 数位DP

    思路: 要找一个数能被他的所有反的数字整除,只需求出这个数能被其数字的LCM整除.而LCM最大为5*7*8*9=2520: 如果直接开dp[20][2520][2520]会超内存,而2^3,3^2,5 ...

  5. CF 711C Coloring Trees(三维dp)

    原题地址: https://codeforces.com/problemset/problem/711/C 题意:有nnn棵树,mmm种颜色,让你分成kkk段,数字000代表该树没没有进行染色,需要你 ...

  6. CF 1680 E. Moving Chips dp 2000

    题意:在高度为 2,长度为 n 的字符矩阵中, '.' 代表空,'*' 代表一个点.一次移动可以使一个点移动到相邻位置中,当移动到的位置中原来就有一个点时,那么原来那个点消失.问最小多少次移动使矩阵中 ...

  7. CF 1625C. Road Optimization(DP)

    Linking 题意: 在一条直线道路从A到走向B点,A点位于0位置,B点位于m位置. 道路上有n个时速牌,第i个牌上标有ai,表示从该时速牌到下一时速牌这段距离中,每走一个位置耗时ai分钟.(初始位 ...

  8. CF 375C Circling Round Treasures [DP(spfa) 状压 射线法]

    C - Circling Round Treasures 题意: 在一个$n*m$的地图上,有一些障碍,还有a个宝箱和b个炸弹.你从(sx,sy)出发,走四连通的格子.你需要走一条闭合的路径,可以自交 ...

  9. Python网络爬虫与信息提取 第1周网络爬虫之规则 单元3:Requests库网络爬虫实战

    京东商品页面的爬取 >>> import requests >>> r = requests.get("https://item.jd.com/29679 ...

最新文章

  1. Java学习总结:14
  2. devServer proxy跨域 设置代理 proxy
  3. 我拍了拍 Redis,没想到被移出了群聊......
  4. tar 解压命令学习与总结
  5. 【Android 安装包优化】动态库打包配置 ( “armeabi-v7a“, “arm64-v8a“, “x86“, “x86_64“ APK 打包 CPU 指令集配置 | NDK 完整配置参考 )
  6. 人工智能时代将至,教育或将发生大改变,未来教育会人工智能化?
  7. elasticsearch2.3安装以及集群部署
  8. java 二维数组位置_请完成下列Java程序:查找一个矩阵中的鞍点,对于一个二维数组中的鞍点,该点位置上的元素在该行上...
  9. FLASH开发[00]
  10. 如何用DELPHI实现把WORD、EXCEL和图片等存储到数据库中
  11. lua php 触摸精灵,lua程序设计主要学习路径
  12. mysql 全文索引 权重_MySQL中的全文索引
  13. feign session 调用_Feign调用session丢失解决方案
  14. #NOIP模拟赛#捕鼠器mousetrap(树)
  15. java bitset clean方法_BitSet实现原理及源码解析
  16. 疑问代词who和whom的用法
  17. 个人微信支付接口在哪申请
  18. css设置内容超出后显示省略号
  19. android手机使用otg usb手柄
  20. VIA图像标注系统汉化版

热门文章

  1. Java的Object类
  2. (002)每日SQL学习:删除名称重复的数据
  3. 年方二八,人生的路口之上
  4. MFC之COleVariant类
  5. hdu 2709 递推
  6. 【数据结构与算法】之深入解析“根据身高重建队列”的求解思路与算法示例
  7. RxSwift之UI控件UIPickerView扩展的使用
  8. Django 模型 —— 模型介绍
  9. 中国大学MOOC 计算机组成原理第5章 测试(下)
  10. 深度学习——05、深度学习框架Caffe