結果
| 問題 |
No.783 門松計画
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2022-06-21 21:55:52 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,598 bytes |
| コンパイル時間 | 157 ms |
| コンパイル使用メモリ | 82,176 KB |
| 実行使用メモリ | 83,620 KB |
| 最終ジャッジ日時 | 2024-10-14 17:03:48 |
| 合計ジャッジ時間 | 6,427 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 6 WA * 4 TLE * 2 -- * 15 |
ソースコード
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):
dp[i][kh[i][1]] = kh[i][0]
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:
dp[i*num+j][k+kh[j][1]] = max(dp[i][k] + kh[j][0],dp[i*num+j][k+kh[j][1]])
ans = 0
for _ in range(c):
ndp = dp[:]
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(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)