题目名称 222. [POI 1997] 便宜的旅行
输入输出 tan.in/out
难度等级 ★☆
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 11
题目来源 GravatarBYVoid 于2008-11-24加入
开放分组 全部用户
提交状态
分类标签
动态规划
分享题解
通过:23, 提交:51, 通过率:45.1%
Gravatar6434 100 0.005 s 0.35 MiB C++
Gravatar任杰 100 0.006 s 0.33 MiB C++
Gravatarlingyixiaoyao 100 0.006 s 0.35 MiB C++
Gravatarlingyixiaoyao 100 0.007 s 0.32 MiB C++
Gravatarquifar 100 0.007 s 0.33 MiB C++
Gravatarlingyixiaoyao 100 0.009 s 0.35 MiB C++
GravatarQhelDIV 100 0.010 s 0.29 MiB C++
GravatarMakazeu 100 0.011 s 0.29 MiB C++
GravatarWHZ0325 100 0.011 s 0.32 MiB C++
GravatarCzb。 100 0.012 s 0.30 MiB C++
关于 便宜的旅行 的近10条评论(全部评论)
一直以为自己的代码是错的,结果交进去就对了……
Gravataropen the window
2016-08-23 19:53 1楼

222. [POI 1997] 便宜的旅行

★☆   输入文件:tan.in   输出文件:tan.out   简单对比
时间限制:1 s   内存限制:128 MiB

【题目描述】

坐马车来进行横穿大陆的旅行一般都要花去几天的时间,所以路上在旅馆的住宿费用是很大的一笔开销。为了使旅行的安全和舒适,人们只在白天赶路,并且每天最多只能走800公里。在旅途中时,车夫和旅客们都是在旅馆中度过晚上的(不包括起点和终点)。现在我们想要尽可能的减少在路上的开销,就是在旅馆中的住宿费用(即使增加了花在路上的时间也无所谓)。由于旅行是在一条高速公路上进行的,所以旅途是单向并且没有分叉的,也就是马车只经过路上的每个点一次。现给出每个旅馆距离起点的距离和一个人(包括车夫和旅客)在旅馆住一个晚上的费用。我们假设在路上的每个点最多都只能有一个旅馆,在起点和终点的住宿是不用花费的。并且保证每800公里必然有一个旅馆,也就是说,这样的旅行必然是可以实现的。

请写一个程序,读入路程的总长度、旅馆的数目和对旅馆的描述,然后找出两个旅行的方案:

一个最便宜的方案(就是付出的宿费最少的方案);如果有多个方案,选择在旅馆中度夜的次数最少的方案;
一个最短的方案(就是在旅馆中度夜的次数最少的方案);如果有多个方案,选择花费最少的方案;

把结果,就是两个旅行方案,最便宜和最短的旅行方案,输出到文件中。

【输入格式】

第一行包括两个用空格分开的正整数,第一个整数d为从起点到终点的距离,第二个整数h为旅馆的数目,d <= 16000,h <= 1000。

接下来h行每行两个整数,为对旅馆的描述。每行中的第一个整数为旅馆距离起点的距离,第二个为旅馆的住宿费用,为不大于1000的整数。

数据是按照据起点距离递增的顺序排列的。

【输出格式】

第一行为最便宜的旅程方案。

第二行输出最短的旅程方案。

所有的整数用空格分开。

【输入样例】

2000 7
100 54
120 70
400 17
700 38
1000 25
1200 18
1440 40

【输出样例】

400 1200
400 1200