結果
問題 | No.2378 Cards and Subsequences |
ユーザー |
![]() |
提出日時 | 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 |
ソースコード
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()