codeforce 789 div2 b2
#pragma GCC optimize(2) #pragma GCC optimize(1) #include<bits/stdc++.h> typedef long long ll; typedef unsigned long long ull; const ull base=131; #define MAX 200009 #define PI 3.141592653589793 using namespace std; inline void solve(){ string op;int len;cin>>len>>op; int ans=0,zd=0; for(int i=0;i<len-1;i+=2){ if(op[i]!=op[i+1]) op[i]=op[i+1]='2',ans++; } char last='2'; for(int i=0;i<len;i++){ if(op[i]=='2') continue; if(op[i]!=last) last=op[i],zd++; } cout<<ans<<' '<<max(1,zd)<<endl; } int main() { int sum;cin>>sum; while(sum--) { solve(); } }
看题解想出思路来了(然后卡在代码实现上,老想着双指针统计一下
之后看了下大佬的题解惊呼还可以这样
实际上只要无视01段落然后每次更新下状态即可