|Time Limit: 1000MS||Memory Limit: 65536K|
|Total Submissions: 2710||Accepted: 962|
and finishes at the station "Sverdlovsk", so stations are numbered starting from "Ekaterinburg" (it has number 1) and "Sverdlovsk" is the last station.
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 between stations –X
price for the ticket
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 2*L2, 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.
(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⑴ lines contain distances from the first station ("Ekaterinburg") on the railway
line to others. These distances are given as different positive integers and are arranged in the ascending order. The distance from "Ekaterinburg" to "Sverdlovsk" does not exceed 10^9. The distance between any neighboring stations does not exceed L3. The minimal
travel cost between two given stations will not exceed 10^9.
using namespace std;
const int inf = 0x3f3f3f3f;
const int N = 10010;
int l1, l2, l3;
int c1, c2, c3;
int n, s, e;
while(~scanf("%d%d%d%d%d%d", &l1, &l2, &l3, &c1, &c2, &c3))
scanf("%d%d", &s, &e);
if (s > e)
memset (dp, inf, sizeof(dp));
sta = 0;
dp[e] = 0;
for (int i = 2; i <= n ; ++i)
for (int i = e – 1; i >= s; –i)
for (int j = i; j <= e; ++j)
if (sta[j] – sta[i] > l3)
if (sta[j] – sta[i] <= l1)
dp[i] = min(dp[i], dp[j] + c1);
else if (sta[j] – sta[i] <= l2)
dp[i] = min(dp[i], dp[j] + c2);
dp[i] = min(dp[i], dp[j] + c3);
波比源码 » POJ2355――Railway tickets
- 本站所有资源版权均属于原作者所有，这里所提供资源均只能用于参考学习用，请勿直接商用。若由于商用引起版权纠纷，一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量，若小于网盘提示的容量则是这个原因。这是浏览器下载的bug，建议用百度网盘软件或迅雷下载。若排除这种情况，可在对应资源底部留言，或 联络我们.。
- 对于PPT，KEY，Mockups，APP，网页模版等类型的素材，文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买，且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况，但部分素材会在素材包内有一份字体下载链接清单。