题解:P14015 [ICPC 2024 Nanjing R] 生日礼物
更好的阅读体验
经典套路,我个人认为是橙题。
相邻相等不好刻画,我们直接把偶数位置反转,这样一组相邻相等中恰好有一个被反转,变成删除相邻不同。
那么假设没有
有
那么这道题就做完了,复杂度
#include<bits/stdc++.h>
#define int long long
#define endl '\n'
#define N 500006
using namespace std;
int T,n,ans;
char ch[N];
vector<int> cnt(3);
main()
{
scanf("%lld",&T);
while(T--)
{
scanf("%s",ch+1),n=strlen(ch+1),cnt={0,0,0},ans=1e15;
for(int i=2;i<=n;i+=2)if(ch[i]=='0')
ch[i]='1';
else if(ch[i]=='1')ch[i]='0';
for(int i=1;i<=n;i++)cnt[ch[i]^48]++;
for(int i=0;i<=cnt[2];i++)
ans=min(ans,abs(cnt[0]+i-cnt[1]-(cnt[2]-i)));
printf("%lld\n",ans);
}
return 0;
}