AtCoder Grand Contest 021 D - Reversed LCS(区间dp)
生活随笔
收集整理的這篇文章主要介紹了
AtCoder Grand Contest 021 D - Reversed LCS(区间dp)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
D - Reversed LCS
繁凡さん
設 f[l,r,k]f [ l , r , k ]f[l,r,k] 表示區間 [l,r][ l , r ][l,r] 中修改 kkk 次能得到的最長回文子序列的長度,直接區間DP轉移即可。
字符串的 最長回文子序列(lps) 長度等于其自身與反轉的 最長公共子序列(lcs)長度嗎?
#include<bits/stdc++.h>using namespace std; const int N=310; int f[N][N][N]; char s[N]; int n,m; int dfs(int l,int r,int k) {if(k<0) return -0x3f3f3f3f;if(l>r) return 0;if(l==r) return 1;if(f[l][r][k]) return f[l][r][k];return f[l][r][k]=max({dfs(l+1,r,k),dfs(l,r-1,k),dfs(l+1,r-1,k-(s[l]!=s[r]))+2}); } int main() {scanf("%s%d",s+1,&m);n=strlen(s+1);printf("%d\n",dfs(1,n,m));return 0; }總結
以上是生活随笔為你收集整理的AtCoder Grand Contest 021 D - Reversed LCS(区间dp)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 络绎不绝的绝是什么意思 详细给大家进行介
- 下一篇: 刻舟求剑出自哪部古籍 刻舟求剑讲解