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

Codeforces Round #574 (Div. 2)——C. Basketball Exercise(简单DP)

时间:2019-08-04 19:58:15      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:最大   code   test   个数   while   mes   sync   ref   题解   

题目传送门

题意:

输入n,给出两组均为 n个数字的数组a和b,轮流从a和b数组中取出一个数字,要求严格按照当前所选数字的数组下标比上一个所选数字的数组下标更大,计算能够取出的数字加起来的总和最大能为多少。
测试样例1:

输入:
5
9 3 5 7 3
5 8 1 4 5

输出:29

提示:选择下面划线标记的数字(9 8 5 4 3)
9 3 5 7 3
5 8 1 4 5

测试样例2:

输入:
3
1 2 9
10 1 1

输出:19

提示:(选择10 9)
1 2 9
10 1 1

题解:

简单的dp题,考虑选与不选两种状态,dp数组0为先取a的情况,1为先取b的情况。

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
ll n,a[100005],b[100005],dp[2][100005];
int main()
{
    ios::sync_with_stdio(false);
    while(!(cin>>n).eof()){
        for(int i=1;i<=n;i++)
            cin>>a[i];
        for(int i=1;i<=n;i++)
            cin>>b[i];
        for(int i=1;i<=n;i++){
            dp[1][i]=max(dp[0][i-1]+b[i],dp[1][i-1]);
            dp[0][i]=max(dp[1][i-1]+a[i],dp[0][i-1]);
        }
        cout<<max(dp[1][n],dp[0][n])<<endl;
    }
    return 0;
}

Codeforces Round #574 (Div. 2)——C. Basketball Exercise(简单DP)

标签:最大   code   test   个数   while   mes   sync   ref   题解   

原文地址:https://www.cnblogs.com/HOLLAY/p/11267318.html

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