Submission #6208405
Source Code Expand
import numpy as np
N,M,Y,Z = map(int,input().split())
CP = [input().split() for _ in range(M)]
color, pts = zip(*CP)
pts = [int(x) for x in pts]
c_to_i = {x:i for i,x in enumerate(color)}
B = input()
# (最後に積んだブロック、コンプリートしたsubset) -> score
INF = 10**15
dp = np.full((M, 1<<M), -INF, dtype = np.int64)
subsets = np.arange(1<<M)
def update_dp(c):
i = c_to_i[c]
p = pts[i]
bit = 1 << i
contain = np.bitwise_and(bit,subsets).astype(np.bool)
# 同色
x = dp[i][contain] + max(0, p + Y)
# 他の色から来る
other = np.full(1<<M, -INF, dtype=np.int64)
for j in range(M):
if i == j:
continue
np.maximum(other, dp[j], out = other)
y = np.maximum(other[contain], other[np.bitwise_xor(subsets[contain],bit)]) + p
dp[i][contain] = np.maximum(dp[i][contain], np.maximum(x,y))
# はじめて
dp[i][bit] = np.maximum(dp[i][bit], p)
for b in B:
update_dp(b)
dp = dp.max(axis = 0)
dp[-1] += Z # perfect
answer = dp.max()
# ひとつも積まない
if answer < 0:
answer = 0
print(answer)
Submission Info
| Submission Time | |
|---|---|
| Task | C - 積み上げパズル |
| User | maspy |
| Language | Python (3.4.3) |
| Score | 100 |
| Code Size | 1105 Byte |
| Status | AC |
| Exec Time | 172 ms |
| Memory | 12532 KiB |
Judge Result
| Set Name | All | ||
|---|---|---|---|
| Score / Max Score | 100 / 100 | ||
| Status |
|
| Set Name | Test Cases |
|---|---|
| All | 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 00_sample_04.txt, 01_rand_00.txt, 01_rand_01.txt, 01_rand_02.txt, 01_rand_03.txt, 01_rand_04.txt, 01_rand_05.txt, 01_rand_06.txt, 01_rand_07.txt, 01_rand_08.txt, 01_rand_09.txt, 01_rand_10.txt, 01_rand_11.txt, 01_rand_12.txt, 01_rand_13.txt, 01_rand_14.txt, 01_rand_15.txt, 01_rand_16.txt, 01_rand_17.txt, 01_rand_18.txt, 01_rand_19.txt, 02_connect_00.txt, 02_connect_01.txt, 02_connect_02.txt, 02_connect_03.txt, 02_connect_04.txt, 02_connect_05.txt, 02_connect_06.txt, 02_connect_07.txt, 02_connect_08.txt, 02_connect_09.txt, 02_connect_10.txt, 02_connect_11.txt, 02_connect_12.txt, 02_connect_13.txt, 02_connect_14.txt, 02_connect_15.txt, 02_connect_16.txt, 02_connect_17.txt, 02_connect_18.txt, 02_connect_19.txt, 02_connect_20.txt, 02_connect_21.txt, 02_connect_22.txt, 02_connect_23.txt, 02_connect_24.txt, 02_connect_25.txt, 02_connect_26.txt, 02_connect_27.txt, 02_connect_28.txt, 02_connect_29.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00_sample_01.txt | AC | 149 ms | 12452 KiB |
| 00_sample_02.txt | AC | 149 ms | 12464 KiB |
| 00_sample_03.txt | AC | 152 ms | 12464 KiB |
| 00_sample_04.txt | AC | 148 ms | 12464 KiB |
| 01_rand_00.txt | AC | 153 ms | 12464 KiB |
| 01_rand_01.txt | AC | 154 ms | 12452 KiB |
| 01_rand_02.txt | AC | 159 ms | 12452 KiB |
| 01_rand_03.txt | AC | 149 ms | 12464 KiB |
| 01_rand_04.txt | AC | 149 ms | 12464 KiB |
| 01_rand_05.txt | AC | 149 ms | 12464 KiB |
| 01_rand_06.txt | AC | 152 ms | 12452 KiB |
| 01_rand_07.txt | AC | 150 ms | 12452 KiB |
| 01_rand_08.txt | AC | 154 ms | 12464 KiB |
| 01_rand_09.txt | AC | 149 ms | 12532 KiB |
| 01_rand_10.txt | AC | 150 ms | 12464 KiB |
| 01_rand_11.txt | AC | 150 ms | 12452 KiB |
| 01_rand_12.txt | AC | 150 ms | 12452 KiB |
| 01_rand_13.txt | AC | 151 ms | 12464 KiB |
| 01_rand_14.txt | AC | 163 ms | 12464 KiB |
| 01_rand_15.txt | AC | 150 ms | 12464 KiB |
| 01_rand_16.txt | AC | 150 ms | 12464 KiB |
| 01_rand_17.txt | AC | 151 ms | 12452 KiB |
| 01_rand_18.txt | AC | 151 ms | 12452 KiB |
| 01_rand_19.txt | AC | 150 ms | 12520 KiB |
| 02_connect_00.txt | AC | 153 ms | 12452 KiB |
| 02_connect_01.txt | AC | 152 ms | 12452 KiB |
| 02_connect_02.txt | AC | 151 ms | 12464 KiB |
| 02_connect_03.txt | AC | 151 ms | 12464 KiB |
| 02_connect_04.txt | AC | 150 ms | 12464 KiB |
| 02_connect_05.txt | AC | 153 ms | 12452 KiB |
| 02_connect_06.txt | AC | 159 ms | 12464 KiB |
| 02_connect_07.txt | AC | 149 ms | 12464 KiB |
| 02_connect_08.txt | AC | 160 ms | 12464 KiB |
| 02_connect_09.txt | AC | 151 ms | 12464 KiB |
| 02_connect_10.txt | AC | 150 ms | 12464 KiB |
| 02_connect_11.txt | AC | 153 ms | 12452 KiB |
| 02_connect_12.txt | AC | 156 ms | 12464 KiB |
| 02_connect_13.txt | AC | 154 ms | 12420 KiB |
| 02_connect_14.txt | AC | 149 ms | 12420 KiB |
| 02_connect_15.txt | AC | 150 ms | 12464 KiB |
| 02_connect_16.txt | AC | 163 ms | 12464 KiB |
| 02_connect_17.txt | AC | 149 ms | 12452 KiB |
| 02_connect_18.txt | AC | 151 ms | 12464 KiB |
| 02_connect_19.txt | AC | 156 ms | 12532 KiB |
| 02_connect_20.txt | AC | 149 ms | 12464 KiB |
| 02_connect_21.txt | AC | 158 ms | 12408 KiB |
| 02_connect_22.txt | AC | 149 ms | 12452 KiB |
| 02_connect_23.txt | AC | 150 ms | 12420 KiB |
| 02_connect_24.txt | AC | 154 ms | 12464 KiB |
| 02_connect_25.txt | AC | 149 ms | 12452 KiB |
| 02_connect_26.txt | AC | 151 ms | 12408 KiB |
| 02_connect_27.txt | AC | 154 ms | 12464 KiB |
| 02_connect_28.txt | AC | 172 ms | 12464 KiB |
| 02_connect_29.txt | AC | 150 ms | 12532 KiB |