結果
| 問題 |
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 |
ソースコード
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()
Magentor