結果

問題 No.703 ゴミ拾い Easy
ユーザー satama6
提出日時 2023-02-12 12:23:11
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 1,026 ms / 1,500 ms
コード長 2,677 bytes
コンパイル時間 333 ms
コンパイル使用メモリ 81,864 KB
実行使用メモリ 169,332 KB
最終ジャッジ日時 2024-07-16 04:40:24
合計ジャッジ時間 16,070 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 46
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

class LiChaoTree:
def __init__(self, M, A) -> None:
"""
{x1, ..., xn}()
"""
self.M = M #
l = 1
while l < M:
l <<= 1
self.length = l
self.sg = [None] * (2 * l) # (a, b)
self.X = [1 << 60] * l
self.update_X(A)
def update_X(self, A):
self.X = A + [1 << 60] * (self.length - self.M)
def get_value(self, line, x):
"""xline
"""
return line[0] * x + line[1]
def _add_line(self, line, k, l, r):
"""
line
Parameter
-----------
k:
l:
r:
"""
if self.sg[k] is None : self.sg[k] = line; return
m = (l + r) // 2
lx, mx, rx = self.X[l], self.X[m], self.X[r-1]
left = self.get_value(line, lx) < self.get_value(self.sg[k], lx) #
middle = self.get_value(line, mx) < self.get_value(self.sg[k], mx) #
right = self.get_value(line, rx) < self.get_value(self.sg[k], rx) #
# line
if left and right:self.sg[k] = line; return
# line
elif not (left or right) : return
# lineline
if middle : self.sg[k], line = line, self.sg[k]
# line
if left != middle : self._add_line(line, 2*k, l, m)
# line
else : self._add_line(line, 2*k+1, m, r)
def add_line(self, line):
self._add_line(line, 1, 0, self.length)
def gen(self, k, x):
k += self.length
while k > 0:
if self.sg[k] is not None : yield self.get_value(self.sg[k], x)
k >>= 1
def query(self, k, x):
return min(self.gen(k, x))
N = int(input())
A = list(map(int, input().split()))
X = list(map(int, input().split()))
Y = list(map(int, input().split()))
lichao = LiChaoTree(N, A)
v = 0
for i in range(N):
lichao.add_line((-2*X[i], X[i]**2 + Y[i]**2 + v))
v = lichao.query(i, A[i]) + A[i]**2
print(v)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0