第五届华为“创新杯”编程大赛初赛题目(第二场)
2014-05-06 22:13
344 查看
题目描述
电瓶车行到终点过程中有N个充电站,每个充电站的价格是不同的,每度电可运行的距离固定。请以最节省方式骑完全程。
在起始的时候每个电瓶车的电量是满的,此部分价格不算入总价格
输入
输入参数为电瓶车能够存储电量的大小,终点距起点的距离,每度电可运行的距离,充电站个数,充电站列表。
其中充电站列表包括该充电的每度价格和距起点的距离
充电站列表的结构
{
Int nPrize;//每度电单价
int nDist;//离出发点距离
}
注意,充电站的结构请按照字符串的方式进行解析
输出
输出:如果可以达到终点,则输出运行的距离和花费;如果不能运行到达终点,则输出可运行的最大距离和花费
样例输入
10 20 1 2 {1,5} {2,15}
样例输出
20 15
自己最开始的思路:
1.如果剩余电量能到达后面电力更便宜的一个站,就开过去;
2.如果1不符合,但是如果能够在该站加电,到达后面电力更便宜的一个站,就加电开过去,使得抵达时电力恰好用完;
3.如果1,2都不符合,就在这个站加满电,然后跑到下一个站。若能抵达终点,就直接到终点。
后来在写代码的时候感觉不对,主要是第3点,自己举了个反例,比如:
S(0)---X1(10,5)X2(11,7)-------->D(10)
其中X代表充电站,X(a,b)的a代表价格,b代表距离,而电车一次性充满电可以行使距离的60%(即:距离6),按照原来的算法,电车在X1处,符合条件3(即:如果1,2都不符合,就在这个站加满电,然后跑到下一个站。若能抵达终点,就直接到终点),此时在X1处加满了电(即加50%的电),但其实只需要在X1加40%的电即可。
因此加了判断,如果加满电行驶的距离能大于等于剩余的路程,就加恰好到达目的地的电量。
后来又仔细分析了下,感觉还是不对,例如
S(1)---X1(10,5)X2(11,6)X3(2,7)-------->D(10)
按照改进后的算法,应在X1处加40%的电量,然后直接开到终点。但最优的是:
在X1加10%的电(因此时电车剩余10%的电量,充10%后有20%的电量,恰好能行驶距离2),使之恰好到达X3,再在X3加30%的电,使之恰好到达终点。
因此,最优策略不能只考虑当前的加电站和后面一个加点站,因此感觉比较复杂,不知道有哪位大神帮忙解决下。
电瓶车行到终点过程中有N个充电站,每个充电站的价格是不同的,每度电可运行的距离固定。请以最节省方式骑完全程。
在起始的时候每个电瓶车的电量是满的,此部分价格不算入总价格
输入
输入参数为电瓶车能够存储电量的大小,终点距起点的距离,每度电可运行的距离,充电站个数,充电站列表。
其中充电站列表包括该充电的每度价格和距起点的距离
充电站列表的结构
{
Int nPrize;//每度电单价
int nDist;//离出发点距离
}
注意,充电站的结构请按照字符串的方式进行解析
输出
输出:如果可以达到终点,则输出运行的距离和花费;如果不能运行到达终点,则输出可运行的最大距离和花费
样例输入
10 20 1 2 {1,5} {2,15}
样例输出
20 15
自己最开始的思路:
1.如果剩余电量能到达后面电力更便宜的一个站,就开过去;
2.如果1不符合,但是如果能够在该站加电,到达后面电力更便宜的一个站,就加电开过去,使得抵达时电力恰好用完;
3.如果1,2都不符合,就在这个站加满电,然后跑到下一个站。若能抵达终点,就直接到终点。
后来在写代码的时候感觉不对,主要是第3点,自己举了个反例,比如:
S(0)---X1(10,5)X2(11,7)-------->D(10)
其中X代表充电站,X(a,b)的a代表价格,b代表距离,而电车一次性充满电可以行使距离的60%(即:距离6),按照原来的算法,电车在X1处,符合条件3(即:如果1,2都不符合,就在这个站加满电,然后跑到下一个站。若能抵达终点,就直接到终点),此时在X1处加满了电(即加50%的电),但其实只需要在X1加40%的电即可。
因此加了判断,如果加满电行驶的距离能大于等于剩余的路程,就加恰好到达目的地的电量。
后来又仔细分析了下,感觉还是不对,例如
S(1)---X1(10,5)X2(11,6)X3(2,7)-------->D(10)
按照改进后的算法,应在X1处加40%的电量,然后直接开到终点。但最优的是:
在X1加10%的电(因此时电车剩余10%的电量,充10%后有20%的电量,恰好能行驶距离2),使之恰好到达X3,再在X3加30%的电,使之恰好到达终点。
因此,最优策略不能只考虑当前的加电站和后面一个加点站,因此感觉比较复杂,不知道有哪位大神帮忙解决下。
相关文章推荐
- 2013华为第五届编程大赛 成都初赛题目和解答
- 【大坑特坑】第六届华为“创新杯”编程大赛初赛题目(第五场)
- 2014第六届华为创新杯编程大赛初赛解题报告
- 2014第六届华为创新杯编程大赛初赛解题报告
- 华为2012第四届编程大赛初赛题目(4-22下午)
- 第六届华为创新杯编程大赛-进阶1第1轮
- 华为2014编程大赛初赛
- 第六届华为创新杯编程大赛-进阶1第1轮 洞穴逃生 (bfs + 优先队列)
- 2012年华为软件校园招聘编程测验(又名:2012华为创新杯编程大赛)软件Java语言类原题与解答
- POJ “顶嵌杯”全国嵌入式系统C语言编程大赛初赛 题目代码
- 微软2014编程之美挑战赛初赛第二场 题目2 : 字符串压缩
- 2013华为杯编程大赛成都第三组试题--------题目 A: 路灯统计
- 华为2012编程大赛题目(1)
- 华为第四届编程大赛题目
- 华为2012编程大赛题目(2)
- 第六届华为创新杯编程大赛-进阶1第3轮
- 第六届华为创新杯编程大赛-进阶1第3轮
- csdn英雄会题解之第五届在线编程大赛月赛指定题目:反向互补子串
- 第六届华为创新杯编程大赛-----电话号码本的设计
- 第五届在线编程大赛月赛指定题目:反向互补子串。测试版