結果
| 問題 |
No.783 門松計画
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2022-06-22 21:11:10 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,838 bytes |
| コンパイル時間 | 201 ms |
| コンパイル使用メモリ | 82,124 KB |
| 実行使用メモリ | 119,476 KB |
| 最終ジャッジ日時 | 2024-11-06 07:34:20 |
| 合計ジャッジ時間 | 8,197 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 24 WA * 3 |
ソースコード
import copy
n,c = map(int,input().split())
l = [int(i) for i in input().split()]
w = [int(i) for i in input().split()]
cdd = {}
for i in range(n):
if l[i] in cdd:
cdd[l[i]] = min(cdd[l[i]],w[i])
else:
cdd[l[i]] = w[i]
num = len(cdd)
if num <= 2:
print(0)
exit()
kh = []
for li in cdd:
kh.append([li,cdd[li]])
#kh.sort()
#print(kh)
dp = [[0]*(c+1) for i in range((num)*num)]
for i in range(num):
if kh[i][1] > c:
continue
dp[i][kh[i][1]] = kh[i][0]
ndp = copy.deepcopy(dp)#[[0]*(c+1) for i in range((num)*num)]
for i in range(num):
for j in range(num):
if i == j:
continue
for k in range(c+1):
if dp[i][k] != 0 and k+kh[j][1] <= c:
#print(dp[i][k] + kh[j][0],i,j,k)
ndp[i*num+j][k+kh[j][1]] = max(dp[i][k] + kh[j][0],ndp[i*num+j][k+kh[j][1]])
dp = copy.deepcopy(ndp)
#print(dp)
#exit()
ans = 0
for m in range(c):
ndp = [[0]*(c+1) for i in range((num)*num)]
for i in range(num*num):
for j in range(num):
a0 = i//num
a1 = i%num
if a0 == j or a1 == j:#同じ長さならスルー
continue
for k in range(m,c+1):
if dp[i][k] != 0 and k+kh[j][1] <= c:
if a0 < a1:
if a1 > j:
tmp = max(dp[i][k] + kh[j][0],ndp[a1*num+j][k+kh[j][1]])
ndp[a1*num+j][k+kh[j][1]] = tmp
ans = max(tmp,ans)
else:
if a1 < j:
tmp = max(dp[i][k] + kh[j][0],ndp[a1*num+j][k+kh[j][1]])
ndp[a1*num+j][k+kh[j][1]] = tmp
ans = max(tmp,ans)
#print(dp,ndp)
dp = ndp[:]
print(ans)