4.4Codeforces Round 935 (Div. 3)
//计数不要轻易采用count
//循环多次计数————采用前缀和
#include<bits/stdc++.h>
using namespace std;
#define int long long
using i64 = long long;
void solve()
{
int n;cin>>n;
string s;cin>>s;
vector<int> pre(n+1);//前缀和数组
for(int i=0;i<n;i++)
{//记录前i个数字中1的数量
pre[i+1]+=pre[i]+(s[i]=='1'); //借用前一个,来得到前缀和 存到1—n里
}
int ans=1e9;
vector<int> doc;
double mid=1.0*n/2;
for(int i=0;i<=n;i++)
{
int ls=i-pre[i],rs=pre[n]-pre[i];//ls是前i个中0的数量, rs是i之后中1的数量
if(ls>=(i+1)/2&&rs>=(n-i+1)/2)
{//满足题目条件
if(abs(i-mid)<abs(mid-ans))
{
ans=i;//更新更小值
}
}
}
cout<<ans<<"\n";
}
signed main()
{
ios::sync_with_stdio(false);cin.tie(nullptr);
int t = 1; std::cin >> t;
while(t--) solve();
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步