傳送門
顯然是dp
但是交換會改變後面的狀態,好像很麻煩
我們設 f [ i ] [ j ] [ k ] 表示到了第 i 個字元,j 交換了 j 次,k 交換了 k 次後最多的匹配數
我們每次只考慮當前要改變的字元,而不考慮具體跟誰交換
那麼在乙個狀態中,如果j > k 說明還有 j-k 個 'j' 目前找不到交換目標,但是經過後面的轉移或許可以找到匹配
k > j 的情況也差不多意思
有點像是先欠著到時候再還
轉移也不難 ,**裡有說明
#include#include#include
#include
#include
#include
using
namespace
std;
typedef
long
long
ll;inline
intread()
while(ch>='
0'&&ch<='
9')
return x*f;
}const
int n=507,inf=1e9+7
;int
n,m,ans;
int f[n][107][107
];char
a[n];
intmain()
//不交換也有匹配
if(a[i-1]=='
j'&&a[i]=='
j'&&j) //
把後面的j換掉,增加匹配
if(a[i-1]=='
z'&&a[i]=='
j'&&j&&k) //
把兩個字元一起換掉,增加匹配
if(a[i-1]=='
z'&&a[i]=='
z'&&k) f[i][j][k]=max(f[i][j][k],f[i-2][j][k-1]+1);//
把前面的z換掉,增加匹配
}
for(int i=0;i<=m;i++) ans=max(ans,f[n][i][i]);
printf("%d
",ans);
return0;
}
P1136 迎接儀式
題目描述 lhx教主要來x市指導oi學習工作了。為了迎接教主,在一條道路旁,一群orz教主er穿著文化衫站在道路兩旁迎接教主,每件文化衫上都印著大字。一旁的orzer依次擺出 歡迎歡迎歡迎歡迎 的大字,但是領隊突然發現,另一旁穿著 教 和 主 字文化衫的orzer卻不太和諧。為了簡單描述這個不和諧的...
洛谷P1136 迎接儀式
題目描述 lhx教主要來x市指導oi學習工作了。為了迎接教主,在一條道路旁,一群orz教主er穿著文化衫站在道路兩旁迎接教主,每件文化衫上都印著大字。一旁的orzer依次擺出 歡迎歡迎歡迎歡迎 的大字,但是領隊突然發現,另一旁穿著 教 和 主 字文化衫的orzer卻不太和諧。為了簡單描述這個不和諧的...
洛谷P1136 迎接儀式
lhx教主要來x市指導oi學習工作了。為了迎接教主,在一條道路旁,一群orz教主er穿著文化衫站在道路兩旁迎接教主,每件文化衫上都印著大字。一旁的orzer依次擺出 歡迎歡迎歡迎歡迎 的大字,但是領隊突然發現,另一旁穿著 教 和 主 字文化衫的orzer卻不太和諧。為了簡單描述這個不和諧的佇列,我們...