题号:NC21580
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld
题目描述
有n个人在x轴上,每个人的坐标是一个整数,牛牛是一个旅行商人,他在轴上穿梭并与这n个人交易,交易的商品只有一种,每一个人都有对这种商品的需求或者供应,如果delta[i] 是正数,表示这个人要供应delta[i]的数量,如果是负数,表示这个人需要−delta[i]的购买量,保证delta的和非负,一开始牛牛在0位置,手里没有任何商品,每一秒他可以往左或者往右走1个单位的距离,如果他和一个人在同一个位置,就可以与之交易,交易是瞬间发生的,每笔交易的数量是由牛牛决定的,当然他不能卖出超出自己手里含有的商品数量,行走过程中牛牛手里可以拿着任意多的商品,到了一个人的位置,也可以选择不与之交易,最终牛牛需要满足以下两点
1:牛牛必须满足所有人的需求
2:旅行必须要在最后一个人的位置结束。
求最少需要花费多少时间。
输入描述:
第一行输入一个整数n (1 ≤ n ≤ 300)
第二行输入n个元素pos[i]( 1 ≤ pos[i] ≤ 105), 表示每个人的位置
第三行输入n个元素delta[i](-105 ≤ delta[i] ≤ 105)表示每个人的需求
保证pos单调递增,delta的和非负
输出描述:
输出一个整数表示最少需要花费的时间
示例1
输入
复制
5
3 14 15 92 101
-3 2 3 -3 1
说明
总共5个人,0号人在3位置,需要3的购买量. 1号人在14位置有2的供应量. 2号人在15位置有3的供应量. 3号人在92位置有3的购买量。4号人在101位置有1的供应量,最优路线如下
第一步走到15位置. 买下2号人所有的供应量
第二步走到14位置,买下1号人所有的供应量,当前alice一共有5个单位的量。
第三步走到3位置,卖出3个单位。还剩2个单位
第四步走到101,买下4号人的供应量,当前手里一共有3个单位
第五步走到92,卖给3号人3个单位
最后走到101结束旅程
一共花的时间是 15+1+11+98+9+9 = 143.
示例2
输入
复制
8
1 2 4 8 16 32 64 128
-1 -1 -1 -1 1 1 1 1
备注:
子任务一30分: n ≤ 20
子任务二30分:n ≤ 100
子任务三40分:n ≤ 300