zoukankan      html  css  js  c++  java
  • Codeforces Round #574 (Div. 2)——C. Basketball Exercise(简单DP)

    题目传送门

    题意:

    输入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;
    }
    
    
  • 相关阅读:
    switch能否作用在作用在byte、long、string上面?
    websocket(转)
    equal和hashcode、==
    List常用方法
    String,Integer,Double等类型互相转换
    BigDecimal的转换和使用
    gitHub常用命令和技巧
    SQL语句
    SpringBoot注解
    vue格式化时间
  • 原文地址:https://www.cnblogs.com/HOLLAY/p/11267318.html
Copyright © 2011-2022 走看看