求助(TLE)
  • 板块学术版
  • 楼主jjl_cxk
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/7/18 21:43
  • 上次更新2023/11/3 09:00:47
查看原帖
求助(TLE)
1000828
jjl_cxk楼主2023/7/18 21:43

Description

有N个数字,从中选择出连续M(L1<=M<=L2)个数,求出他们之和的最大值

Format

Input

第一排有三个数N, L1, L2。

接下来的N行,每行一个数

1<=L1<=L2<=N,

1<=N<=200000,

-210^9<=每个数<=210^9

Output

一个数字,表示求出来的和的最大值

Samples

输入数据 1

10 6 8

49

-87

-34

-97

61

33

-65

-63

56

50

输出数据 1

72

我的代码里面有梗(TLE)

#include<bits/stdc++.h>
using namespace std;
int GGbond(int nums[1145140],int n,int L1,int L2)
{
    // 计算前缀和数组
    int s[1145140];
    memset(s,0,sizeof(s));
    for (int i=1;i<=n;i++)
        s[i]=s[i-1]+nums[i-1];
    int ans=INT_MIN;
    for (int i=L1;i<=n;i++)
        for (int j=L1;j<=min(i,L2);j++)
        {
			int sum=s[i]-s[i-j];	// 计算当前连续数字的和
            ans=max(ans,sum);// 更新最大和
		}
            
    return ans;
}

int main()
{
    int n,L1,L2;
    cin>>n>>L1>>L2;
    int nums[n];
    for (int i=0;i<n;i++)
        cin>>nums[i];
    int ikun=GGbond(nums,n,L1,L2);
    cout<<ikun<<endl;
    return 0;
}

求DL帮忙改一下(实在改不出了QWQ)

奇怪的是:样例都没过居然没有WA

2023/7/18 21:43
加载中...