AcWing 562. 壁画
原题链接
中等
作者:
risty
,
2024-03-01 10:14:18
,
所有人可见
,
阅读 133
C++ 代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=5e6+10;//有一个大的测试点一定要注意读题
int t;
int s[N];
signed main(){
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>t;
for(int i=1;i<=t;i++){
memset(s,0,sizeof(s));//每次重新初始化
int mmax=0;
int n;
cin>>n;
char h[n+1];
for(int i=1;i<=n;i++)
cin>>h[i];
for(int i=1;i<=n;i++)
s[i]=h[i]-'0';//字符转数字
for(int i=1;i<=n;i++)
s[i]+=s[i-1];
if(n%2==0){//如果是偶数的话
for(int i=0;i<=n/2;i++)
mmax=max(mmax,s[i+n/2]-s[i]);//移动一个区域的和
}
else{//如果是奇数的话
for(int i=0;i<=n/2;i++)
mmax=max(mmax,s[i+n/2+1]-s[i]);
}
cout<<"Case"<<" "<<"#"<<i<<":"<<" "<<mmax<<endl;
}
return 0;
}