結果
問題 | No.771 しおり |
ユーザー |
![]() |
提出日時 | 2020-02-29 20:49:06 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 951 ms / 2,000 ms |
コード長 | 725 bytes |
コンパイル時間 | 157 ms |
コンパイル使用メモリ | 82,396 KB |
実行使用メモリ | 133,020 KB |
最終ジャッジ日時 | 2024-07-22 07:22:47 |
合計ジャッジ時間 | 13,599 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 43 |
ソースコード
#!/usr/bin/env python3 # %% import sys read = sys.stdin.buffer.read readline = sys.stdin.buffer.readline readlines = sys.stdin.buffer.readlines # %% N = int(readline()) m = map(int, read().split()) AB = list(zip(m, m)) # %% A, B = zip(*AB) # # %% INF = 10 ** 18 dp = [[INF] * N for _ in range(1 << N)] for n in range(N): dp[1 << n][n] = 0 for subset in range(1 << N): for newbook in range(N): if subset & (1 << newbook): continue newset = subset | (1 << newbook) for lastbook in range(N): x = max(dp[subset][lastbook], B[lastbook] - A[lastbook] + A[newbook]) if dp[newset][newbook] > x: dp[newset][newbook] = x # %% print(min(dp[-1]))