码迷,mamicode.com
首页 > 其他好文 > 详细

Educational Codeforces Round 101 (Rated for Div. 2) B. Red and Blue

时间:2021-01-20 12:13:42      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:tun   影响   sequence   ble   paint   nta   print   nal   marked   

题目:

Monocarp had a sequence a consisting of n+m integers a1,a2,…,an+m. He painted the elements into two colors, red and blue; n elements were painted red, all other m elements were painted blue.

After painting the elements, he has written two sequences r1,r2,…,rn and b1,b2,…,bm. The sequence r consisted of all red elements of a in the order they appeared in a; similarly, the sequence b consisted of all blue elements of a in the order they appeared in a as well.

Unfortunately, the original sequence was lost, and Monocarp only has the sequences r and b. He wants to restore the original sequence. In case there are multiple ways to restore it, he wants to choose a way to restore that maximizes the value of f(a)=max(0,a1,(a1+a2),(a1+a2+a3),…,(a1+a2+a3+?+an+m))
Help Monocarp to calculate the maximum possible value of f(a).

Input
The first line contains one integer t (1≤t≤1000) — the number of test cases. Then the test cases follow. Each test case consists of four lines.

The first line of each test case contains one integer n (1≤n≤100).

The second line contains n integers r1,r2,…,rn (?100≤ri≤100).

The third line contains one integer m (1≤m≤100).

The fourth line contains m integers b1,b2,…,bm (?100≤bi≤100).

Output
For each test case, print one integer — the maximum possible value of f(a).

Example
input
4
4
6 -5 7 -3
3
2 3 -4
2
1 1
4
10 -3 2 2
5
-1 -2 -3 -4 -5
5
-1 -2 -3 -4 -5
1
0
1
0

output
13
13
0
0

Note
In the explanations for the sample test cases, red elements are marked as bold.

In the first test case, one of the possible sequences a is [6,2,?5,3,7,?3,?4].

In the second test case, one of the possible sequences a is [10,1,?3,1,2,2].

In the third test case, one of the possible sequences a is [?1,?1,?2,?3,?2,?4,?5,?3,?4,?5].

In the fourth test case, one of the possible sequences a is [0,0].

题意:给出两个序列r, b, 将r、b两个序列的数按照原有的序列可进行两两组合或者不进行组合相加,直到r, b两个序列的数全部用完,求出其最大值max(0, ans).

解析:因为该题有负数,可能最大值也是负数,但是这道题给的公式已经规定求得答案最小的情况只能是0。此外,两个序列的顺序互不影响,所以只需找到两者前缀和sumA, sumB的最大值后相加即可(假若题目给的公式没有0在其中,那么最后答案会是max(sumA, max(sumB + sumA, sumB)), 时间复杂度可达到O(t * (n + m)).

代码:

#include<iostream>
#include<cstring>
using namespace std;
const int N = 105;
int n, m, t;
int a[N], b[N];
int main()
{
    cin >> t;
    while(t --)
    {
        int sumA = 0, sumB = 0;
        memset(a, 0, sizeof a);
        memset(b, 0, sizeof b);
        cin >> n;
        for(int i = 1; i <= n; i++)
        {
            cin >> a[i];
            a[i] += a[i-1];
            sumA = max(sumA, a[i]);
        }
        cin >> m;
        for(int i = 1; i <= m; i++)
        {
            cin >> b[i];
            b[i] += b[i-1];
            sumB = max(sumB, b[i]);
        }

        cout << sumA + sumB << endl;
    }
    return 0;
}

Educational Codeforces Round 101 (Rated for Div. 2) B. Red and Blue

标签:tun   影响   sequence   ble   paint   nta   print   nal   marked   

原文地址:https://www.cnblogs.com/K2MnO4/p/14301118.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!