結果
問題 | No.527 ナップサック容量問題 |
ユーザー |
![]() |
提出日時 | 2025-03-20 21:19:06 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 90 ms / 2,000 ms |
コード長 | 1,315 bytes |
コンパイル時間 | 285 ms |
コンパイル使用メモリ | 82,440 KB |
実行使用メモリ | 64,216 KB |
最終ジャッジ日時 | 2025-03-20 21:20:19 |
合計ジャッジ時間 | 3,360 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 37 |
ソースコード
def main():import sysinput = sys.stdin.readdata = input().split()idx = 0n = int(data[idx])idx +=1items = []sum_v = 0for _ in range(n):v = int(data[idx])w = int(data[idx+1])items.append((v, w))sum_v += vidx +=2V = int(data[idx])idx +=1if V == 0:min_w = min(w for v, w in items)min_ans = 1max_ans = min_w -1print(min_ans)print(max_ans)returnmax_possible_v = sum_vif V > max_possible_v:print(0)print('inf')returndp = [float('inf')] * (max_possible_v + 1)dp[0] = 0for (v_i, w_i) in items:for v in range(max_possible_v, v_i - 1, -1):if dp[v - v_i] + w_i < dp[v]:dp[v] = dp[v - v_i] + w_iif dp[V] == float('inf'):print(0)print('inf')returnmin_candidate = dp[V]min_T = float('inf')for v in range(V + 1, max_possible_v + 1):if dp[v] < min_T:min_T = dp[v]if min_T == float('inf'):max_ans = 'inf'else:max_ans = min_T -1print(min_candidate)print(max_ans if max_ans != 'inf' else 'inf')if __name__ == "__main__":main()