結果

問題 No.2378 Cards and Subsequences
ユーザー Magentor
提出日時 2025-03-03 01:02:14
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
WA  
実行時間 -
コード長 1,420 bytes
コンパイル時間 455 ms
コンパイル使用メモリ 12,416 KB
実行使用メモリ 63,776 KB
最終ジャッジ日時 2025-03-03 01:02:21
合計ジャッジ時間 6,394 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2 WA * 4
other TLE * 1 -- * 34
権限があれば一括ダウンロードができます

ソースコード

diff #

def solve():
    n, m, k = map(int, input().split())
    s = list(map(int, input().split()))
    a = list(map(int, input().split()))
    b = list(map(int, input().split()))
    
    MOD = 998244353
    
    total_f_sum = 0
    
    
    def get_subsequences(arr):
        subs = []
        for i in range(1 << len(arr)):
            sub = []
            for j in range(len(arr)):
                if (i >> j) & 1:
                    sub.append(arr[j])
            if sub:
                subs.append(tuple(sub))
        
        unique_subs = set()
        for sub in subs:
            unique_subs.add(sub)
        return list(unique_subs)

    subsequences = get_subsequences(s)

    for subsequence_tuple in subsequences:
        subsequence_list = list(subsequence_tuple)
        l = len(subsequence_list)
        
        f_t = 0
        
        dp = [[0] * (k + 1) for _ in range(l + 1)]
        dp[0][0] = 1
        
        for i in range(1, l + 1):
            card_type = subsequence_list[i-1]
            front_val = a[card_type-1]
            back_val = b[card_type-1]
            
            for j in range(k + 1):
                dp[i][j] = dp[i-1][j]  # Don't flip card i
                if j >= back_val:
                    dp[i][j] = (dp[i][j] + dp[i-1][j - back_val]) % MOD # Flip card i

        f_t = dp[l][k]
        total_f_sum = (total_f_sum + f_t) % MOD
        
    print(total_f_sum)

solve()
0