結果

問題 No.3289 Make More Happy Connection
ユーザー Kyutatsu
提出日時 2025-10-03 22:31:32
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 1,098 bytes
コンパイル時間 4,676 ms
コンパイル使用メモリ 335,036 KB
実行使用メモリ 24,364 KB
最終ジャッジ日時 2025-10-03 22:31:44
合計ジャッジ時間 10,160 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 18 WA * 6
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<bits/stdc++.h>
#include<atcoder/all>

using namespace std;
using ll = long long;
using P = pair<ll, ll>;

int main() {
    // DP[Nセット目まで見た][前回先置き採用はL:0, R:1] := デカいスコア
    int N; cin >> N;
    vector<P> xy(N);
    for (int i=0;i<N;i++) cin >> xy[i].first >> xy[i].second;
    
    vector DP(N+1, vector<ll>(2, 0));
    for (int i=0;i<N-1;i++) {
        // l->l
        ll mx_ll =  DP[i][0] + 
            ((xy[i].second == xy[i+1].first) ? xy[i+1].first : 0);
        DP[i+1][0] = max(DP[i+1][0], mx_ll);
        // l->r
        ll mx_lr =  DP[i][0] + 
            ((xy[i].second == xy[i+1].second) ? xy[i+1].second : 0);
        DP[i+1][1] = max(DP[i+1][1], mx_lr);
        // r->l
        ll mx_rl =  DP[i][1] + 
            ((xy[i].first == xy[i+1].first) ? xy[i+1].first : 0);
        DP[i+1][0] = max(DP[i+1][0], mx_rl);
        // r->r
        ll mx_rr =  DP[i][1] + 
            ((xy[i].first == xy[i+1].second) ? xy[i+1].second : 0);
        DP[i+1][1] = max(DP[i+1][1], mx_rr);
    }
    cout << max(DP[N-1][0], DP[N-1][1]) << endl;

}
0