没必要这么快去看代码,除非你十分愿意看代码
如果你懒得看代码的话请先看我的思路谢谢
好样的 这次下载数据是真的耗费光了
你看我就一个蓝名

看到题目后我思考了一下用前缀和
事实证明我确实要用前缀和
我的思路是从头开始遍历,区间的尾部减去区间的头部是基数(但是整个区间里头有偶数个数)
然后尾部减去头部前面那个数等于区间内数的个数÷2的话,ans记录区间长度
请看本蒟蒻的代码
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int n,x,a[(int)1e5+1000]={0},minx=0;
int main(){
scanf("%d",&n);
scanf("%d",&a[1]);
for(int i=2;i<=n;i++){
scanf("%d",&x);
a[i]=a[i-1]+x;
}
for(int i=1;i<=n;i+=2){
for(int j=1;j<n-i;j++){
if(a[j+i]-a[j-1]==(i+1)/2){
minx=i+1;
break;
}
}
}
printf("%d",minx);
return 0;
}
谢谢大佬