题目重点:
- delta的和非负数,也就是>=0
- pos在x轴上单调递增,不用考虑用abs
- 旅行要在最后一个人结束,那么每次------》、《------完成满足所有人供应量和购买量并回归到lefter之后,要+pos[n-1]到最后一个人结束
- 最佳路线选择:满足delta的和大于等于0时,往回走去满足前面的人供应量和购买量
- *2和mintime=pos[n-1]有很大关系,画图理解,*2回归到起点即lefter,最后所有的路段(lefter至pos[i])之和等于pos[n-1],到最后一个人结束。
import java.util.*;
public class Main{
public static void main(String arg[]){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int[] pos=new int[n];
int[] delta=new int[n];
for(int i=0;i<n;i++){
pos[i]=sc.nextInt();
}
for(int i=0;i<n;i++){
delta[i]=sc.nextInt();
}
int sumdelta=0,mintime=pos[n-1],lefter=pos[0];
for(int i=0;i<n;i++){
sumdelta+=delta[i];
if(sumdelta>=0){
mintime+=2*(pos[i]-lefter);
if(i==n-1) break;
lefter=pos[i+1];
}
}
System.out.print(mintime);
}
}