【题目描述】:
给定由N个正整数组成的序列(a1~aN),请你找出所有区间和值小于T的区间,并输出这些区间的个数。
【输入描述】:
第一行,两个正整数N和T;(1≤N≤10^6;1≤T≤10^9;)
第二行,N个正整数组成的序列;(1≤ai≤10^3)
【输出描述】:
一个数字,表示区间和值小于T的区间个数。
【样例输入】:
10 46
3 6 9 6 7 4 10 4 8 3
【样例输出】:
47
【时间限制、数据范围及描述】:
时间:1s 空间:256M
对于20%的数据:1≤N≤10;
对于40%的数据:1≤N≤10000;
对于100%的数据:1≤N≤10^6;1≤T≤10^9;1≤ai≤10^3;
我用的是前缀和的方法
#include<iostream>
using namespace std;
int n,t,a[1000001],s[1000001];
int sum;
int main()
{
freopen("interval.in","r",stdin);
freopen("interval.out","w",stdout);
cin>>n>>t;
for(int i=1;i<=n;i++)
{
cin>>a[i];
s[i]=s[i-1]+a[i];
}
for(int i=0;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
if(s[j]-s[i]<t)sum++;
}
}
cout<<sum;
return 0;
}
40分超时 qaq,大佬们有没有更好的办法