結果

問題 No.3401 Large Knapsack Problem
コンテスト
ユーザー id-ord
提出日時 2026-01-22 13:53:59
言語 Python3
(3.14.2 + numpy 2.4.0 + scipy 1.16.3)
結果
AC  
実行時間 878 ms / 2,000 ms
コード長 288 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 597 ms
コンパイル使用メモリ 20,808 KB
実行使用メモリ 61,200 KB
最終ジャッジ日時 2026-01-22 13:54:46
合計ジャッジ時間 38,949 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 42
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import numpy as np
M=np.loadtxt(open(0),"q")
N,W=M[0];v,w=M[1:].T
V=W//(U:=w[i:=np.argmax(v/w)]*1000)*v[i]*1000;W%=U
dp=np.full(W+1,-10**9);dp[0]=0
R=np.arange(W+1)
for v,w in M[1:]:
	dp-=R//w*v
	for i in range(w):np.maximum.accumulate(dp[i::w],out=dp[i::w])
	dp+=R//w*v
print(V+dp.max())
0