90分求条!!!!
查看原帖
90分求条!!!!
1189654
hhchhc2799楼主2025/7/2 21:01
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+50;
int n,k,a[N],dp[N][20][5],ans;
char c;
signed main()
{
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>c;
		if(c=='H')a[i]=0;
		if(c=='S')a[i]=1;
		if(c=='P')a[i]=2;	
	}
	for(int i=1;i<=n;i++){
		for(int j=0;j<=min(k,i);j++){
			for(int l=0;l<=2;l++){
				dp[i][j][l]=max(dp[i-1][j][l],(j!=0)*max(dp[i-1][j-1][(l+1)%3],dp[i-1][j-1][(l+2)%3]))+((l+1)%3==a[i]);
			}
		}
	}
	for(int i=0;i<=k;i++)ans=max(max(ans,dp[n][i][0]),max(dp[n][i][1],dp[n][i][2]));
	cout<<ans;
	return 0;
} 
2025/7/2 21:01
加载中...