1 条题解

  • 0
    @ 2026-8-2 14:18:52

    首先注意到至关重要的一点,每一次都只从最左边的某个点开始,也就是说每次获得的分数预留下的卡牌都是这个位置的前缀和。所以直接抛出前缀和数组,将所有的整数加起来就秒了。

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    int a[100005];
    int main(){
    	int n;
    	cin>>n;
    	long long d=0,ans=0;
    	for(int i=1;i<=n;i++){
    		cin>>a[i];
    	}
    	d=a[1];
    	for(int i=2;i<=n;i++){
    		d+=a[i];
    		ans=max(ans,ans+d);
    	}
    	cout<<ans;
    	return 0;
    }
    
    • 1

    信息

    ID
    7241
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    21
    已通过
    5
    上传者