提出 #7569025


ソースコード 拡げる

#include <bits/stdc++.h>
#define REP(i,s,e) for(int i=(s); i<(e);i++)
#define rep(i,n) REP(i,0,n)
#define rep1(i,n) REP(i,1,n)
#define repe(i,n) for(auto &&i:n)
#define all(v) (v).begin(),(v).end()
#define decimal fixed<<setprecision(20)
#define fastcin() cin.tie(0);ios::sync_with_stdio(false)
using namespace std;
using LL = long long;
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; }
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; }
const int INF = 1e9;
const LL LLINF = 1e16;

// i日目に活動jをしたとき、それまでに得られる幸福度の最大値
int dp[100010][3];
int a[101010][3];
int main(){
    int N;
    cin >> N;
    // ループで回せる形で幸福度を持つ
    for(int i=0; i<N; i++)for(int j=0; j<3; j++) cin >> a[i][j];

    for(int j=0; j<3; j++) dp[0][j] = 0;
    for(int i=0; i<N; i++){
        for(int j=0; j<3; j++)for(int k=0; k<3; k++){
            if(j == k) continue;    // 前日と同じ活動はしない
            // i+1日目に活動kをする
            // aは0-indexedに対し、dpテーブルは1-indexedで日付を持っているのに留意
            dp[i+1][k] = max(dp[i+1][k], dp[i][j]+a[i][k]);
        }
    }
    int ans = 0;
    for(int j=0; j<3; j++) ans = max(ans, dp[N][j]);
    cout << ans << endl;
}

提出情報

提出日時
問題 C - Vacation
ユーザ AokabiC
言語 C++14 (GCC 5.4.1)
得点 100
コード長 1405 Byte
結果 AC
実行時間 110 ms
メモリ 2560 KiB

ジャッジ結果

セット名 All
得点 / 配点 100 / 100
結果
AC × 13
セット名 テストケース
All 0_00, 0_01, 0_02, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09
ケース名 結果 実行時間 メモリ
0_00 AC 1 ms 256 KiB
0_01 AC 1 ms 256 KiB
0_02 AC 1 ms 256 KiB
1_00 AC 1 ms 256 KiB
1_01 AC 110 ms 2560 KiB
1_02 AC 94 ms 2560 KiB
1_03 AC 93 ms 2560 KiB
1_04 AC 92 ms 2560 KiB
1_05 AC 92 ms 2560 KiB
1_06 AC 92 ms 2560 KiB
1_07 AC 92 ms 2560 KiB
1_08 AC 91 ms 2560 KiB
1_09 AC 92 ms 2560 KiB