結果

問題 No.3213 depth max K
ユーザー srjywrdnprkt
提出日時 2025-07-28 18:02:30
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
MLE  
実行時間 -
コード長 1,040 bytes
コンパイル時間 2,996 ms
コンパイル使用メモリ 283,676 KB
実行使用メモリ 814,592 KB
最終ジャッジ日時 2025-07-28 18:02:37
合計ジャッジ時間 6,323 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other MLE * 1 -- * 40
権限があれば一括ダウンロードができます

ソースコード

diff #

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

using namespace std;
using namespace atcoder;
using ll = long long;
using mint = modint998244353;

int main(){
    cin.tie(nullptr);
    ios_base::sync_with_stdio(false);

    /*
       dp(i, j, k) = i文字目までで深さがjであり、Kに到達したか(k)?
    */

    int N, K;
    cin >> N >> K;
    vector dp(N*2+1, vector(K+1, vector<mint>(2)));
    dp[0][0][0] = 1;
    for (int i=1; i<=N*2; i++){
        for (int j=0; j<=K; j++){
            // (にする。
            if (j == K){
                dp[i][j][1] += dp[i-1][j-1][0];
                dp[i][j][1] += dp[i-1][j-1][1];
            }
            else if (j > 0){
                dp[i][j][0] += dp[i-1][j-1][0];
                dp[i][j][1] += dp[i-1][j-1][1];
            }
            // )にする。
            if (j+1 <= K){
                dp[i][j][0] += dp[i-1][j+1][0];
                dp[i][j][1] += dp[i-1][j+1][1];
            }
        }
    }
    cout << dp[N*2][0][1].val() << endl;

    return 0;
}
0