【基于贡献的贪心问题】
【基于贡献的贪心问题】
不要考虑太多因素,仅需考虑变化了之后对于结果的变化
->操作后会不会使答案变劣
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;
}