最小花费
  pv5yotLONGGI 2023年11月02日 41 0

最小花费


在某条线路上有N个火车站,有三种距离的路程,L1,L2,L3,对应的价格为C1,C2,C3.其对应关系如下: 

距离s           

票价 

0<S<=L1         C1 

L1<S<=L2        C2 

L2<S<=L3        C3 

输入保证0<L1<L2<L3<10^9, 0<C1<C2<C3<10^9。 

每两个站之间的距离不超过L3。 当乘客要移动的两个站的距离大于L3的时候,

可以选择从中间一个站下车,然后买票再上车,所以乘客整个过程中至少会买两张票。 

现在给你一个 L1,L2,L3,C1,C2,C3。然后是A B的值,其分别为乘客旅程的起始站和终点站。

 然后输入N,N为该线路上的总的火车站数目,然后输入N-1个整数,分别代表从该线路上的第一个站,到第2个站,第3个站,……,第N个站的距离。 

根据输入,输出乘客从A到B站的最小花费。


import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int l1 = in.nextInt();
        int l2 = in.nextInt();
        int l3 = in.nextInt();
        int c1 = in.nextInt();
        int c2 = in.nextInt();
        int c3 = in.nextInt();
        int a = in.nextInt();
        int b = in.nextInt();
        int n = in.nextInt();
        int[] nums = new int[n];
        for(int i=1;i<n;i++){
            nums[i] = in.nextInt();
        }
        int[] dp = new int[n];

        for(int i=a;i<b;i++){
            int index = find(nums, a-1, i, l3);
            dp[i] = dp[index] + c3;
            index = find(nums, a-1, i, l2);
            dp[i] = Math.min(dp[i], dp[index] + c2);
            index = find(nums, a-1, i, l1);
            dp[i] = Math.min(dp[i], dp[index] + c1);
        }
        System.out.println(dp[b-1]);
    }
    public static int find(int[] nums, int left, int right, int num){
        int mid = 0;
        int max = nums[right];
        while(left <= right){
            mid = (left+right)>>1;
            if(max - nums[mid] > num){
                left = mid+1;
            }else if(max - nums[mid] < num){
                right = mid -1;
            }else{
                return mid;
            }
        }
        return left;
    }
}


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  gBkHYLY8jvYd   2023年12月06日   50   0   0 #includecii++
  gBkHYLY8jvYd   2023年12月09日   29   0   0 cii++数据
  gBkHYLY8jvYd   2023年12月06日   24   0   0 cii++依赖关系
  gBkHYLY8jvYd   2023年11月19日   24   0   0 #includei++数据
  lh6O4DgR0ZQ8   2023年11月24日   18   0   0 cii++c++
  gBkHYLY8jvYd   2023年11月19日   21   0   0 i++测试数据数据
  gBkHYLY8jvYd   2023年11月22日   23   0   0 ioscii++
  gBkHYLY8jvYd   2023年12月10日   22   0   0 #include数组i++
  gBkHYLY8jvYd   2023年12月08日   20   0   0 #includecii++
  gBkHYLY8jvYd   2023年11月14日   31   0   0 #includei++升序
  lh6O4DgR0ZQ8   2023年11月19日   32   0   0 Systemide多态