【基于贡献的贪心问题】

【基于贡献的贪心问题】

不要考虑太多因素,仅需考虑变化了之后对于结果的变化
->操作后会不会使答案变劣

Kousuke's Assignment

https://codeforces.com/contest/2033/problem/D
只要相等->交换一定不会使答案变劣

int n;
void solve(){
    cin>>n;
    vector<int> a(n+2,0);
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=2;i<=n/2;i++){
        if(a[i-1]==a[i] || a[n-i+1]==a[n-i+2]){
            swap(a[i],a[n-i+1]);
        }
    }
    int ans=0;
    for(int i=1;i<=n;i++){
        int j=i;
        while(a[j]==a[i]) j++;
        j--;
        ans+=(j-i);
        i=j;
    }
    cout<<ans<<endl;
}
posted @ 2025-04-18 18:43  White_ink  阅读(7)  评论(0)    收藏  举报