Luogu CF1469B 题解

这道题其实并不难。

题目大意是这样的:已知两个序列 \(r\)\(b\),求出合并后的最大前缀和。

很好发现:答案就是 \(r\)\(b\) 各自的最大前缀和之和。

但要注意:\(r\)\(b\) 可以什么都不取,因此 \(maxa\)\(maxb\) 初始要赋值为 \(0\)

AC Code:

#include<iostream>
using namespace std;
int t;
int n,m;
int sa,sb;// sb 只是巧合
int main(){
    cin>>t;//多测
    while(t--){
        cin>>n;
        sa=0,sb=0;//初始化
        int maxa=0,maxb=0;//记得要赋值为 0
        for(int i=1;i<=n;i++){
            int a;
            cin>>a;
            sa+=a;
            maxa=max(maxa,sa);//求最大前缀和
        }
        cin>>m;
        for(int i=1;i<=m;i++){
            int b;
            cin>>b;
            sb+=b;
            maxb=max(maxb,sb);//求最大前缀和
        }
        cout<<maxa+maxb<<endl;//输出答案
    }
    return 0;// return 0 是一个好习惯
}
posted @ 2023-10-05 15:33  I_like_magic  阅读(15)  评论(0)    收藏  举报