CF #683 (Div. 2)D. Catching Cheaters【最長公共子序列LCS變形】
D. Catching Cheaters |
---|
題意: 給你兩個字串A , B,他們的子串分別是C , D ,求 4 ⋅ L C S ( C , D ) − ∣ C ∣ − ∣ D ∣ 4 ⋅ L C S ( C , D ) − ∣ C ∣ − ∣ D ∣ 4⋅LCS(C,D)−∣C∣−∣D∣的最大值, L C S ( C , D ) L C S ( C , D ) LCS(C,D) 表示C , D最長公共子序列的長度。
題解: LCS基礎上的一點簡單變形。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define _for(i, a, b) for(int i = (a); i <= (b); ++i)
const int N = 5e3 + 10;
int n, m, ans;
int dp[N][N];
char a[N], b[N];
int main() {
scanf("%d%d", &n, &m);
scanf("%s%s", a + 1, b + 1);
_for(i, 1, n) _for(j, 1, m) {
dp[i][j] = max(dp[i][j], max(dp[i - 1][j] - 1, dp[i][j - 1] - 1));
if(a[i] == b[j]) dp[i][j] = max(dp[i][j], dp[i - 1][j - 1] + 2);
ans = max(ans, dp[i][j]);
}
printf("%d\n", ans);
return 0;
}
相關文章
- 最長公共子序列LCS 輸出所有LCS
- 動態規劃(最長公共子序列LCS)動態規劃
- 51Nod 1006 最長公共子序列Lcs
- lCS(最長公共子串)
- 最長公共子序列
- 最長公共子序列(JAVA)Java
- 牛客網 Coincidence(最長公共子串LCS板題)IDE
- 線性dp--最長上升子序列變形
- 線性dp:最長公共子序列
- 最長公共子序列求方案數
- java 實現 最長公共子序列Java
- 最長公共子序列 Longest Common Subsequence
- LeetCode 1143.最長公共子序列LeetCode
- 力扣1143. 最長公共子序列 動態規劃之最長公共子序列力扣動態規劃
- 最長上升子序列LIS 詳解+變形+擴充
- 動態規劃-最長公共子序列動態規劃
- 動態規劃——最長公共子序列動態規劃
- 【LeetCode動態規劃#14】子序列系列題(最長遞增子序列、最長連續遞增序列、最長重複子陣列、最長公共子序列)LeetCode動態規劃陣列
- 最長公共子序列你學會了嗎
- [題解]P1439 【模板】最長公共子序列
- 最長公共子序列問題—動態規劃sdut動態規劃
- 字串篇(python)—兩個字串的最長公共子序列字串Python
- 51nod-基因匹配+luogu-【模板】最長公共子序列
- 動態規劃經典問題----最長公共子序列動態規劃
- [線性dp] 合唱隊形(最長上升子序列模型)模型
- 最長上升子序列
- 經典演算法題每日演練——最長公共子序列演算法
- 詳解動態規劃最長公共子序列--JavaScript實現動態規劃JavaScript
- [譯] Swift 演算法學院 - 最長公共子序列演算法Swift演算法
- 線性dp:最長公共子串
- 領釦LintCode演算法問題答案-77. 最長公共子序列演算法
- [Java] 藍橋杯ADV-202 演算法提高 最長公共子序列Java演算法
- 動態規劃之最長公共子序列求解動態規劃
- 以最長公共子序列問題理解動態規劃演算法(DP)動態規劃演算法
- 線性dp:最長上升子序列
- 594. 最長和諧子序列
- 死嗑 最長上升子序列(LIS)
- 淺談最長公共子序列引發的經典動態規劃問題動態規劃