結果
| 問題 |
No.506 限られたジャパリまん
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2017-04-23 00:53:37 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,284 bytes |
| コンパイル時間 | 85 ms |
| コンパイル使用メモリ | 12,672 KB |
| 実行使用メモリ | 11,008 KB |
| 最終ジャッジ日時 | 2024-06-28 04:16:25 |
| 合計ジャッジ時間 | 2,417 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 5 WA * 12 RE * 8 |
ソースコード
def read_data():
H, W, K, P = map(int, input().split())
xys = []
names = []
for k in range(K):
x, y, name = input().rstrip().split()
xys.append((int(x), int(y)))
names.append(name)
return H, W, K, P, xys, names
def solve(H, W, K, P, xys, names):
record = 0
sol_mask = 0
mapp = [[1] * (W + 1) for _ in range(H + 1)]
for mask in range(1 << K):
score = calc_score(mask, mapp, H, W, K, P, xys)
if score > record:
record = score
sol_mask = mask
print_result(record, sol_mask, names)
def print_result(record, sol_mask, names):
print(record)
if record:
for i in range(len(names)):
if (sol_mask & 1) == 0:
print(names[i])
sol_mask >>= 1
def calc_score(mask, mapp, H, W, K, P, xys):
if bin(mask).count('1') != K - P:
return 0
pos = [i for i in range(K) if mask & (1 << i)]
for p in pos:
x, y = xys[p]
mapp[x][y] = 0
dp = [1] + [0] * (H + 1)
for row in mapp:
for y, c in enumerate(row):
dp[y] = (dp[y] + dp[y - 1]) * c
for p in pos:
x, y = xys[p]
mapp[x][y] = 1
return dp[H]
H, W, K, P, xys, names = read_data()
solve(H, W, K, P, xys, names)