Submission #22567049
Source Code Expand
import sys
from heapq import *
import numpy as np
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
def from_read(dtype=np.int64):
return np.fromstring(read().decode(), dtype=dtype, sep=' ')
def from_readline(dtype=np.int64):
return np.fromstring(readline().decode(), dtype=dtype, sep=' ')
def main(N, A, B):
"""
dp 関数の Fenchel 双対を slope trick で管理
"""
INF = 1 << 60
L = [INF]
R = [INF]
add_L = add_R = 0
def push_L(x):
heappush(L, -(x - add_L))
def pushpop_L(x):
return -heappushpop(L, -(x - add_L)) + add_L
def top_L():
return -L[0] + add_L
def push_R(x):
heappush(R, x - add_R)
def pushpop_R(x):
return heappushpop(R, x - add_R) + add_R
def top_R():
return R[0] + add_R
min_f = 0
for i in range(N):
if i != 0:
# dp に a|x| を加算する
add_L -= A[i - 1]
add_R += A[i - 1]
c = -B[i]
# -ax+a (-1<=x<=1) との畳み込み
# 双対に |x-c| + c を加算する
min_f += c
r0 = top_R()
min_f += max(0, c - r0)
push_L(pushpop_R(c))
l0 = top_L()
min_f += max(0, l0 - c)
push_R(pushpop_L(c))
return -min_f
N = int(readline())
A = from_readline()
B = from_read()
print(main(N, A, B))
Submission Info
| Submission Time | |
|---|---|
| Task | J - Farm Village |
| User | maspy |
| Language | Python (3.8.2) |
| Score | 100 |
| Code Size | 1478 Byte |
| Status | AC |
| Exec Time | 1092 ms |
| Memory | 49568 KiB |
Judge Result
| Set Name | All | ||
|---|---|---|---|
| Score / Max Score | 100 / 100 | ||
| Status |
|
| Set Name | Test Cases |
|---|---|
| All | 00_sample_00, 00_sample_01, 00_sample_02, 10_small_0, 10_small_1, 10_small_2, 10_small_3, 10_small_4, 10_small_5, 10_small_6, 10_small_7, 10_small_8, 10_small_9, 20_medium_0, 20_medium_1, 20_medium_2, 20_medium_3, 20_medium_4, 20_medium_5, 20_medium_6, 20_medium_7, 20_medium_8, 20_medium_9, 30_large_0, 30_large_1, 30_large_2, 30_large_3, 30_large_4, 30_large_5, 30_large_6, 30_large_7, 30_large_8, 30_large_9, 50_biased_0, 50_biased_1, 50_biased_10, 50_biased_11, 50_biased_12, 50_biased_13, 50_biased_14, 50_biased_15, 50_biased_16, 50_biased_17, 50_biased_18, 50_biased_19, 50_biased_2, 50_biased_3, 50_biased_4, 50_biased_5, 50_biased_6, 50_biased_7, 50_biased_8, 50_biased_9 |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00_sample_00 | AC | 116 ms | 26628 KiB |
| 00_sample_01 | AC | 113 ms | 26836 KiB |
| 00_sample_02 | AC | 118 ms | 26896 KiB |
| 10_small_0 | AC | 115 ms | 26908 KiB |
| 10_small_1 | AC | 114 ms | 26872 KiB |
| 10_small_2 | AC | 114 ms | 26900 KiB |
| 10_small_3 | AC | 114 ms | 26856 KiB |
| 10_small_4 | AC | 114 ms | 26908 KiB |
| 10_small_5 | AC | 112 ms | 27076 KiB |
| 10_small_6 | AC | 116 ms | 26780 KiB |
| 10_small_7 | AC | 113 ms | 26872 KiB |
| 10_small_8 | AC | 114 ms | 27044 KiB |
| 10_small_9 | AC | 112 ms | 27060 KiB |
| 20_medium_0 | AC | 118 ms | 26828 KiB |
| 20_medium_1 | AC | 118 ms | 27040 KiB |
| 20_medium_2 | AC | 115 ms | 27116 KiB |
| 20_medium_3 | AC | 113 ms | 26968 KiB |
| 20_medium_4 | AC | 115 ms | 26820 KiB |
| 20_medium_5 | AC | 118 ms | 26836 KiB |
| 20_medium_6 | AC | 111 ms | 27040 KiB |
| 20_medium_7 | AC | 115 ms | 27208 KiB |
| 20_medium_8 | AC | 116 ms | 27076 KiB |
| 20_medium_9 | AC | 117 ms | 26944 KiB |
| 30_large_0 | AC | 953 ms | 46980 KiB |
| 30_large_1 | AC | 598 ms | 36952 KiB |
| 30_large_2 | AC | 605 ms | 37000 KiB |
| 30_large_3 | AC | 148 ms | 27652 KiB |
| 30_large_4 | AC | 1020 ms | 48032 KiB |
| 30_large_5 | AC | 828 ms | 42544 KiB |
| 30_large_6 | AC | 702 ms | 40988 KiB |
| 30_large_7 | AC | 910 ms | 45800 KiB |
| 30_large_8 | AC | 248 ms | 29888 KiB |
| 30_large_9 | AC | 490 ms | 34828 KiB |
| 50_biased_0 | AC | 1092 ms | 47364 KiB |
| 50_biased_1 | AC | 1074 ms | 49372 KiB |
| 50_biased_10 | AC | 1063 ms | 47516 KiB |
| 50_biased_11 | AC | 1058 ms | 47196 KiB |
| 50_biased_12 | AC | 1069 ms | 49484 KiB |
| 50_biased_13 | AC | 1087 ms | 49320 KiB |
| 50_biased_14 | AC | 1064 ms | 47416 KiB |
| 50_biased_15 | AC | 1071 ms | 47268 KiB |
| 50_biased_16 | AC | 1075 ms | 49168 KiB |
| 50_biased_17 | AC | 1066 ms | 49404 KiB |
| 50_biased_18 | AC | 1063 ms | 47412 KiB |
| 50_biased_19 | AC | 1058 ms | 49476 KiB |
| 50_biased_2 | AC | 1058 ms | 49568 KiB |
| 50_biased_3 | AC | 1075 ms | 49320 KiB |
| 50_biased_4 | AC | 1068 ms | 47228 KiB |
| 50_biased_5 | AC | 1064 ms | 49200 KiB |
| 50_biased_6 | AC | 1079 ms | 47148 KiB |
| 50_biased_7 | AC | 1070 ms | 47172 KiB |
| 50_biased_8 | AC | 1075 ms | 49320 KiB |
| 50_biased_9 | AC | 1064 ms | 49560 KiB |