1447D Catching Cheaters
题目链接
题意
给定一个长度为n
的字符串A
,和一个长度为m
的字符串B
(字符串中仅包含小写字母)
C
,D
分别为A
,B
的一个子串
输出最大的S(C,D)S(C,D)S(C,D)
S(C,D)=4×LCS(C,D)−∣C∣−∣D∣S(C,D)=4 \times LCS(C,D) - |C| - |D| S(C,D)=4×LCS(C,D)−∣C∣−∣D∣
LCS( Longest Common Subsequence,最长公共子序列 )
思路
dp[i][j]
表示为S(C,D)S(C,D)S(C,D)的值,其中
C
是以A[i]
结尾的子串D
是以B[j]
结尾的子串
当A[i]
不等于B[j]
时dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) - 1
当A[i]
等于B[j]
时dp[i][j] = max(dp[i][j], dp[i - 1][j - 1] + 2)
注:dp[i][j]不能为负数
状态转移方程
if(A[i] == B[i])dp[i][j] = max(dp[i][j], dp[i - 1][j - 1] + 2);
elsedp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) - 1;
AC的代码
#include<bits/stdc++.h>
using namespace std;int main() {int n, m, res = 0;string A, B;cin >> n >> m >> A >> B;vector<vector<int>> dp(n + 1, vector<int>(m + 1, 0));for (int i = 1; i <= n; i++) {char a = A[i - 1];for (int j = 1; j <= m; j++) {char b = B[j - 1];if (a == b) {dp[i][j] = max(dp[i][j], dp[i - 1][j - 1] + 2);}else {dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) - 1;}dp[i][j] = max(dp[i][j], 0);// 贡献值不能为0res = max(res, dp[i][j]);}}cout << res << endl;return 0;
}
1447D Catching Cheaters相关推荐
- B. Catching Cheaters(cf)dp
原题链接:Problem - 1446B - Codeforces 题目大意:给你两个字符串A,B,让你分别从A,B中截取子串(连续)C,D,然后这两个串的最长公共子序列长度是LCS(C,D),让你找 ...
- Catching Cheaters (LCS变形)
链接 题目大意: 给出两个字符串a, b,求max(4lcs(c, d) - |c| - |d|) ,其中,c,d是字符串a,b的子串. 思路: 记 f[i][j] a串前i个,b串前j个所能构成的最 ...
- Catching Cheaters
DIV2-D 题意: 给定两个字符串,你可以分别从每个串中找出一个串,然后选出的这俩串最长的公共子序列最大为多少. 思考: 刚开始我还以为是最长上升公共子序列,一定要读好题.既然是最长公共,而且还可以 ...
- 两个字符串的最长公共子序列长度_算法学习笔记(58): 最长公共子序列
(为什么都更了这么多篇笔记了,这时候才讲这么基础的内容呢?因为我本来以为LCS这种简单的DP不用讲的,结果CF不久前考了LCS的变式,然后我发现由于自己对LCS一点都不熟,居然写不出来 ,于是决定还是 ...
- CF #683 div.2
CF #683 div.2 目前 ABCD A. Add Candies B. Numbers Box C. Knapsack D. Catching Cheaters 结尾 A. Add Candi ...
- bzoj 3384: [Usaco2004 Nov]Apple Catching 接苹果(DP)
3384: [Usaco2004 Nov]Apple Catching 接苹果 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 114 Solved: ...
- Spring Catching 实战
实践Spring Catching,中间遇到一些问题,记录一下. 第一步,搭建一个项目框架,采用Spring Jdbc的方式操作持久化数据 在测试的时候,遇到第一个问题: org.h2.jdbc.Jd ...
- Apple Catching
Apple Catching - POJ 2385 - Virtual Judge https://vjudge.net/problem/POJ-2385 题意:有两棵树,每分钟树上会掉下一颗苹果,问 ...
- Catching Both Gray and Black Swans: Open-set Supervised Anomaly Detection
Catching Both Gray and Black Swans: Open-set Supervised Anomaly Detection 摘要 尽管大多数现有的异常检测研究只假设有正常的训练 ...
最新文章
- R语言统计入门课程推荐——生物科学中的数据分析Data Analysis for the Life Sciences
- java convexhull_图像上划凸多边形(convexHull()函数)
- [转]我们为什么要用vue,他解决了什么问题,如何使用它?
- [css] 不用换行的标签,怎么伪元素实现换行的效果?
- Linux中samba的权限详解,活用三种权限 理解Samba的权限控制
- ug断开视图断开线的距离_UG编程刀路优化技巧
- 深入理解计算机系统总结
- Linux Centos 常用命令整理
- mysql自增id 重置
- imx6ull uboot移植
- 上传文件到云服务器一般用什么软件?
- c++数组、结构体数组和对象数组的初始化方式
- 点赋科技:如何提高淘宝店铺的流量?
- python枚举详解
- 【深度学习】(1) CNN中的注意力机制(SE、ECA、CBAM),附Pytorch完整代码
- 深入理解 OC/C++ 闭包
- 微信开发者工具模拟器中图片无法显示
- mysql select from user_select * from user 这条 SQL 语句,背后藏着哪些不可告人的秘密?...
- OCX打包CAB并签名的过程
- 任何一台计算机硬件系统都是油,大学生计算机基础第一章.ppt