#574ラウンドCodeforces(本部2) - 。Cバスケットボール練習(シンプルDP)

トピックポータル

質問の意味:

N入力は、両方のグループは、以下の配列の現在選択されている標準的なアレイより選択された数の上付き数字を要求に応じて、デジタルアレイA及びBから採取した順番で、nは数値AおよびBの配列を与えられています大きい、最大数の和の計算から取り出すことができますがどのくらいのエネルギーを追加します。
試験例1:

入力:
5
。9 3. 5. 7. 3
5. 1. 4. 5. 8。

出力:29

注:選択したスクライブマークの下の数字(98543)
9 3 5 7 3
5 8 1 4 5

テストサンプル2:

入力:
3
1 2 9。
10. 1. 1

出力:19

ヒント選択:( 109)
129
10 1 1

ソリューション:

DP簡単な質問、二つの状態を考慮して選択し、選択されていない、配列DP 0をとる最初のケースのための最初のテイク、1bの場合です。

#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;
}

おすすめ

転載: www.cnblogs.com/HOLLAY/p/11267318.html