P9653 不空白的画布 求助
查看原帖
P9653 不空白的画布 求助
663195
Z_AuTwT楼主2023/10/15 13:01
#include<bits/stdc++.h>
using namespace std;
#define int long long
int arr[1000010],ansx[1000010];
bool cmp(int a,int b){
	if(a%2==1&&b%2==0) return true;
	if(b%2==1&&a%2==0) return false;
	return a>b;
}
signed main(){
    int t;
    cin>>t;
    while(t--){
        int n,m,k,v=1,ans=0,cnt=1;
        cin>>n>>m>>k;
        for(int i=1;i<=n;i++){
            cin>>arr[i];
        }
        for(int i=2;i<=n;i++){
            if(arr[i]==arr[i-1]){
                v++;
            }else{
                if(v!=0) ansx[cnt++]=v;
                v=1;
            }
        }ansx[cnt++]=v;
        sort(ansx+1,ansx+cnt,cmp);
        int cnt1=1;
        while(cnt1<cnt){
        	if(ansx[cnt1]==1) ans++;
        	else{
        		if(m>=ansx[cnt1]/2){
        			ans+=ansx[cnt1];
        			m-=ansx[cnt1]/2;
				}else{
					if(m>0) ans+=m*2+1;
					else ans++;
					m=0;
				}
			}cnt1++;
			ansx[cnt1-1]=0;
		}
		cout<<ans<<"\n";
    }
}
2023/10/15 13:01
加载中...