AtCoder Grand Contest 021 D - Reversed LCS(区间dp)
生活随笔
收集整理的這篇文章主要介紹了
AtCoder Grand Contest 021 D - Reversed LCS(区间dp)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
D - Reversed LCS
繁凡さん
設(shè) f[l,r,k]f [ l , r , k ]f[l,r,k] 表示區(qū)間 [l,r][ l , r ][l,r] 中修改 kkk 次能得到的最長(zhǎng)回文子序列的長(zhǎng)度,直接區(qū)間DP轉(zhuǎn)移即可。
字符串的 最長(zhǎng)回文子序列(lps) 長(zhǎng)度等于其自身與反轉(zhuǎn)的 最長(zhǎng)公共子序列(lcs)長(zhǎng)度嗎?
#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; }總結(jié)
以上是生活随笔為你收集整理的AtCoder Grand Contest 021 D - Reversed LCS(区间dp)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 络绎不绝的绝是什么意思 详细给大家进行介
- 下一篇: 2021“MINIEYE杯”中国大学生算