P1136 迎接儀式

2022-05-19 18:37:53 字數 1124 閱讀 2034

傳送門

顯然是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卻不太和諧。為了簡單描述這個不和諧的佇列,我們...