90分求调
查看原帖
90分求调
1558170
_chiyu_1236_楼主2024/11/6 21:13

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

你看我就一个蓝名

看到题目后我思考了一下用前缀和

事实证明我确实要用前缀和

我的思路是从头开始遍历,区间的尾部减去区间的头部是基数(但是整个区间里头有偶数个数)

然后尾部减去头部前面那个数等于区间内数的个数÷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++){
			//printf("%d %d %d\n",i,a[j+i],a[j-1]);
			if(a[j+i]-a[j-1]==(i+1)/2){
				minx=i+1;
				break;
			}
		}
	}	
	printf("%d",minx);
	return 0;
}

谢谢大佬

2024/11/6 21:13
加载中...