結果

問題 No.2524 Stripes
ユーザー MasKoaTS
提出日時 2023-09-27 15:44:06
言語 C
(gcc 13.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
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 4 TLE * 1 -- * 20
権限があれば一括ダウンロードができます

ソースコード

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