求贪心解法
  • 板块P1136 迎接仪式
  • 楼主rhisea
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/9/29 22:16
  • 上次更新2023/10/27 09:30:17
查看原帖
求贪心解法
279771
rhisea楼主2022/9/29 22:16

蒟蒻自己写写不出来,只拿了28(

#include <bits/stdc++.h>
using namespace std;
int a[10010];
int main(){
	string s;
	int n,k,maxn = 0;
	cin>>n>>k;
	cin>>s;
	for (int i=0;i<n;i++){
		if (s[i] == 'z')
			a[i+1] = 1;
		else if (s[i] == 'j')
			a[i+1] = 0;
	}
    int ans = 0;
	for (int i=1;i<=n;i++){
		if (k == 0){
			break;
		}
		if (a[i] == 0 and a[i+1]!=1){
			for (int j=2;j<=n;j++){
				if (a[j] == 1&&(a[j-1]!=0)){
					swap(a[j-1],a[i]);
//                    for (int s=1;s<=n;s++) 
//                        cout<<a[s]<<" ";
//                    cout<<endl;
					k--;
					break;
				}
				if (a[j] == 1 and a[j-1] == 0){
					j++;
				}
			}
		}
		else if (a[i] == 0 and a[i+1] == 1){
			i+=1;
			continue;
		}
		ans = 0;
		for (int j=1;j<n;j++){
			if (a[j] == 0 and a[j+1] == 1){
				ans++;
				j++;
			}
		}
//        cout<<ans<<endl;
		maxn = max(maxn,ans);
	}
	cout<<maxn<<endl;
	return 0;
}
/*
5 2
zzzjj
1<->0
1<->1
1<->1
1<->0
1<->1
1<->1
0
*/
2022/9/29 22:16
加载中...