题目重点:

  • 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);
    }
}