zoukankan      html  css  js  c++  java
  • 1031. Railway Tickets

    The railway line “Yekaterinburg-Sverdlovsk” with several stations has been built. This railway line can be represented as a line segment, railway stations being points on it. The railway line starts at the station “Yekaterinburg” and finishes at the station “Sverdlovsk”, so stations are numbered starting from “Yekaterinburg” (it has number 1) and “Sverdlovsk” is the last station.
    Problem illustration
    Cost of the ticket between any two stations depends only on a distance between them. The prices for the tickets are specified in the following table.
    distance X between stations price for the ticket
    0 < X  L1 C1
    L1 < X  L2 C2
    L2 < X  L3 C3
    Direct tickets from one station to another can be booked if and only if the distance between these station does not exceed L3. So sometimes it is necessary to book several tickets to pay for the parts of the whole way between stations.
    For example, on the railway line shown at the figure above there are seven stations. The direct ticket from the second station to the sixth one can not be booked. There are several ways to pay for the travel between these stations. One of them is to book two tickets: one ticket at price C2 to travel between the second and the third stations, and other at price C3 to travel between the third and the sixth stations. Note, that though the distance between the second and the sixth stations is equal to 2L2, the whole travel can not be paid by booking two tickets at price C2, because each ticket is valid for only one travel and each travel should start and end only at stations.
    Your task is to write a program, that will find the minimal cost of the travel between two given stations.

    Input

    The first line of the input contains 6 integers L1, L2, L3, C1, C2, C3 (1 ≤ L1 < L2 < L3 ≤ 109, 1 ≤ C1 < C2 < C3 ≤ 109) in the specified order with one space between. The second line contains the amount of stations N (2 ≤ N ≤ 10000). The third line contains two different integers separated by space. They represent serial numbers of stations, the travel between which must be paid. Next N−1 lines contain distances from the first station (“Yekaterinburg”) on the railway line to others. These distances are given as different positive integers and are arranged in the ascending order. The distance from “Yekaterinburg” to “Sverdlovsk” does not exceed 109. The distance between any neighboring stations does not exceed L3. The minimal travel cost between two given stations will not exceed 109.

    Output

    Program should print to the output the only number, which is the minimal travel cost between two given stations.

    Sample

    inputoutput
    3 6 8 20 30 40
    7
    2 6
    3
    7
    8
    13
    15
    23
    
    70
    
    Problem Author: Pavel Zaletsky  Problem Source: Ural Collegiate Programming Contest '99
  • 相关阅读:
    OSG绘制几何图形
    OSGMFC
    OSG第一个Demo
    线性四叉树十进制Morton码计算示例
    单源最短路径——Dijkstra算法学习
    .Net内存优化的几点经验
    强制回收和IDisposable.Dispose方法
    七参数计算正确性验证——Coord软件使用
    [转载]windows任务管理器中的工作设置内存,内存专用工作集,提交大小详解
    T4自动生成数据库C#实体类学习(1)
  • 原文地址:https://www.cnblogs.com/sdau--codeants/p/3240378.html
Copyright © 2011-2022 走看看