結果

問題 No.2524 Stripes
ユーザー MasKoaTSMasKoaTS
提出日時 2023-09-27 15:44:06
言語 C
(gcc 12.3.0)
結果
TLE  
実行時間 -
コード長 1,120 bytes
コンパイル時間 334 ms
コンパイル使用メモリ 35,212 KB
実行使用メモリ 8,960 KB
最終ジャッジ日時 2024-07-20 09:54:51
合計ジャッジ時間 22,467 ms
ジャッジサーバーID
(参考情報)
judge4 / judge5
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 3 ms
5,248 KB
testcase_01 AC 3 ms
5,376 KB
testcase_02 AC 3 ms
5,376 KB
testcase_03 AC 5,741 ms
5,376 KB
testcase_04 AC 13 ms
5,376 KB
testcase_05 AC 1,506 ms
5,376 KB
testcase_06 AC 5,575 ms
5,376 KB
testcase_07 TLE -
testcase_08 -- -
testcase_09 -- -
testcase_10 -- -
testcase_11 -- -
testcase_12 -- -
testcase_13 -- -
testcase_14 -- -
testcase_15 -- -
testcase_16 -- -
testcase_17 -- -
testcase_18 -- -
testcase_19 -- -
testcase_20 -- -
testcase_21 -- -
testcase_22 -- -
testcase_23 -- -
testcase_24 -- -
testcase_25 -- -
testcase_26 -- -
testcase_27 -- -
権限があれば一括ダウンロードができます

ソースコード

diff #

// 愚直

#pragma GCC target("avx2")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")

#include <stdio.h>
#define N_MAX 100000
#define u32 unsigned int
#define MOD 998244353

int main(){
    int n;  scanf("%d", &n);
    char s[N_MAX];  scanf("%s", s);

    int a[N_MAX] = { 0 };
    for(int i = 0; i < N_MAX; ++i){
        a[i] = (s[i] == 'R');
    }

    u32 dp[N_MAX + 1][2] = { 0 };
    u32 ndp[N_MAX + 1][2] = { 0 };
    dp[0][0] = dp[0][1] = 1;
    dp[1][a[0]] = 1;
    for(int i = 1; i < n; ++i){
        // printf("%d\n", i);
        ndp[0][0] = dp[0][0];
        ndp[0][1] = dp[0][1];
        for(int j = 1; j < n + 1; ++j){
            ndp[j][0] = dp[j][0];
            ndp[j][1] = dp[j][1];
            ndp[j][a[i]] += dp[j - 1][a[i] ^ 1];
            ndp[j][a[i]] -= (ndp[j][a[i]] >= MOD) * MOD;
        }
        for(int j = 0; j < n + 1; ++j){
            dp[j][0] = ndp[j][0];
            dp[j][1] = ndp[j][1];
        }
    }

    for(int j = 1; j < n + 1; ++j){
        u32 ans = dp[j][0] + dp[j][1];
        ans -= (ans >= MOD) * MOD;
        printf("%u\n", ans);
    }

    return 0;
}
0