CF1057B DDoS

CF1057B DDoS

前缀和练习题。

大概是普及组第二题的难度。

题目大意:给出一个序列,问你的某一段连续序列 [i,j][i,j] 的和是否大于一个 100×(ji+1)100\times (j-i+1),找这个序列的长度最大。

由于是静态查询区间和,显然可以用前缀和算法,由于 n5000n \le 5000,显然可以使用 n2n^2 的办法去遍历每一个区间,而前缀和优化的就是这个查询这个区间和的过程。

最后统计区间长度最大就结束了。

#include<bits/stdc++.h>
using namespace std;
const int N =1e6+10;
int a[N],s[N];
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>a[i],s[i]=s[i-1]+a[i];
	int maxx=0;
	for(int i=1;i<=n;i++)
		for(int j=0;j<i;j++)
			if(s[i]-s[j]>100*(i-j))
				maxx=max(maxx,i-j);
	cout<<maxx<<endl;
	return 0;
}
posted @ 2023-02-23 13:30  June_Failure  阅读(8)  评论(0)    收藏  举报  来源