HDU 1913 Computers

 

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点的权值(就是成本加维修费用啦),存放一个权值就马上开始更新权值。

 

代码:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值