poj 1018 Communication System

原题的链接:
http://acm.pku.edu.cn/JudgeOnline/problem?id=1018

这题用DP写了个算法,但是WA了,而且我觉得算法空间复杂度会很高。
请教了fuliang同学,他用搜索方法,有很强力的剪枝,一直不太领会
他的算法的思想,看了他写的代码,然后自己总结一下他的算法的思想。

把所有输入的设备按照bandwidth从小到大排序。从最小的bandwidth开始遍历,
依次搜索每一种设备,如果某个设备的bandwidth>=正遍历到的bandwidth,而且
该设备的price小于给定的初始price,那么保存该设备的bandwidth,该设备的price
累加,直到把这一种类的所有设备都遍历完。如果能找到符合要求的设备,那么就继续
遍历下一种类的设备,如果没有找到,就break。

这个算法包含的剪枝思想是:
遍历到某个bandwidth,这个bandwidth作为最小的bandwidth,比它小的bandwidth
都不考虑,在选择每种类型的设备的供应商时,只考虑bandwidth>=选择的bandwidth
的供应商的设备。选择了较大的bandwidth,因为有之前遍历到的bandwidth垫底,
所以总的bandwidth还是遍历到的bandwidth,所以这时候只要考虑找price最小的设备就是了。

很难精确描述出算法的思想,直接观摩fuliang同学的代码有助于理解该算法。
http://fuliang.iteye.com/blog/429100
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值