求教区间~~问~~水题
  • 板块学术版
  • 楼主Wei_wei_
  • 当前回复7
  • 已保存回复7
  • 发布时间2023/7/6 19:59
  • 上次更新2023/11/3 11:17:22
查看原帖
求教区间~~问~~水题
313727
Wei_wei_楼主2023/7/6 19:59
【题目描述】:
给定由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,大佬们有没有更好的办法

2023/7/6 19:59
加载中...