【普及模拟】数列

【普及模拟】数列

题目描述

给定一个长度为N的数列,求一段连续的子数列满足该子数列中的各元素的平均数大于A,输出可行方案的总数。

输入

  第一行两个整数N,A
 接下来N个整数,代表数列的N个元素。

输出

 一个整数,即可行的方案数。

样例输入

5 1
1 2 3 4 5

样例输出

14

数据范围限制

数据规模

 对于60%的数据 N <= 1000
 对于100%的数据 N <= 100000
所有数据包括都在longint范围内。

分析:这道题我没有AC,只有六十分
60%:
我们只需要在输入是预处理一下(前缀和)。
然后用双重循环暴力枚举起点和终点,即可。

code:

#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
long long b[100010],qzh[100010];
int main()
{
	freopen("sequence.in","r",stdin);
	freopen("sequence.out","w",stdout);
	memset(qzh,0,sizeof(qzh));
	int n,a,ans=0;
	cin>>n>>a;
	for(int i = 1;i <= n;i++) 
	{
		cin>>b[i];
		b[i]-=a;
		qzh[i]=qzh[i-1]+b[i];
	}
	for(int i = 1;i <= n;i++)
		if(qzh[i]>0) ans++;
	for(int i = n;i >= 2;i--)
	for(int j = 1;j <= i-1;j++)
		if(qzh[i]>qzh[j]) ans++;
	cout<<ans<<endl;
	return 0;
}

谢谢

发布了80 篇原创文章 · 获赞 58 · 访问量 2539

猜你喜欢

转载自blog.csdn.net/bigwinner888/article/details/104263866