*(File IO): input:sequence.in output:sequence.out
时间限制: 1001 ms 空间限制: 128001 KB 具体限制
题目描述
给定一个长度为N的数列,求一段连续的子数列满足该子数列中的各元素的平均数大于
A
A
A,输出可行方案的总数。
输入
第一行两个整数
N
,
A
N,A
N,A
接下来
N
N
N个整数,代表数列的
N
N
N个元素。
输出
一个整数,即可行的方案数。
样例输入
5 1
1 2 3 4 5
样例输出
14
数据范围限制
对于
60
60
60%的数据
N
<
=
1000
N <= 1000
N<=1000
对于
100
100
100%的数据
N
<
=
100000
N <= 100000
N<=100000
所有数据包括都在
l
o
n
g
i
n
t
longint
longint范围内。
解题思路
介于我太菜了,知道正解却不会打树状数组。。。
所以只敲了个
60
60
60分代码。。。。(我枯了/(ㄒoㄒ)/~~)
先前缀和一下。。
然后两重循环。。。枚举起点和终点。。
代码
60
60
60分 我太菜了
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<cmath>
using namespace std;
int n,a,ans;
int b[100010];
int main(){
freopen("sequence.in","r",stdin);
freopen("sequence.out","w",stdout);
scanf("%d%d",&n,&a);
for(int i=1;i<=n;i++)
{
scanf("%d",&b[i]);
b[i]=b[i]+b[i-1];
}
for(int i=1;i<=n;i++)
{
for(int j=i;j<=n;j++)
if((b[j]-b[i-1])*1.0/(j-i+1)>a)
++ans;
}
cout<<ans;
}