HDU 1913 Computers

来源:互联网 发布:zz什么意思网络用语 编辑:程序博客网 时间:2024/04/27 13:29

 

http://acm.hdu.edu.cn/showproblem.php?pid=1913

 

题目大意:这道题就是说有个人想在不同的时期分别买一台新电脑(具体一共买几台不知道),希望能够使用这些电脑来工作N年。但是呢,每台电脑每年都有维护费用,并且呢,你每买一台电脑时,都要花固定的成本C(就是用来买台电脑的钱了),所以呢,你使用电脑工作N年,你要花的钱就是买电脑的固定成本,再加上总的维修费用。现在呢,你要写一个程序,求出使用N年的最少钱是多少。

 

例题:

3/*固定成本*/
3/*使用年限*/
5 7 50/*第一台电脑使用到第三年的维修费用,1-1,1-2,1-3*/
6 8/*第二台电脑使用到第三年的维修费用,2-2,2-3*/
10/*第三台电脑使用到第三年的费用 3-3*/

 

这组测试数据的最佳购买电脑的策略是:第一台电脑使用1年,费用为5+3,然后买第二台电脑,从第二年开始一直用到第三年末,费用为3+8,所以总的费用为19

 

解题思路:这道题也是一题求最短路径的问题啦,它求的就是从1点到N点的最短路径,只是这题不能够使用floyd算法以及Dijstra算法来做,虽然这两个算法都是用来求最短路径用的,但是它们求出的解,中间经过的点的顺序是不能够控制的。这道题它必须是边终点的下一个点来作为新边的起点。对于这题来说,第一台电脑假设从第一年一直用到第2年,那么你后面买的电脑就是从第三年起开始使用的了。了解到这点,就肯定不能用上面的算法来做了。我们还是定义一个lowcost[]的变量,用来存放1点到i点的权值(就是成本加维修费用啦),存放一个权值就马上开始更新权值。

 

代码:

 

原创粉丝点击