POJ1018《Communication System》方法:枚举+剪枝

题目描述:题目很拗口,简言之就是,从n组中每组选取一对数<a,b>,使得min{a1,a2...} / sum{b1,b2...}最大。

方法:枚举,因为受到两个因素的影响,所以“固定带宽”,就是将所有对数以带宽a排序(价格是第二要素,id是第三要素),然后加入价格,遍历看是否能使结果最大。

剪枝,1.第一层遍历只遍历第一个到第倒数n个数,因为剩下来的数如果小于n,则不满足n个数的题意。

2.如果当前数的带宽大于比较的数所在组的最大带宽,则终止,因为无法在所比较数的组中找到符合数。

3.如果比较到最后发现visit的数没到达n个,则跳出。

虽然这道题AC了,但是如果出现极端数据

1 2
1 80 1
2 110 120 150 2
出来的结果是0.661,实际上最佳应该是<80,1><150,2>结果80/3,但这种数据违背常识了,所以这题只是以带宽为第一要素,价格为第二要素,这也反应了POJ的测试数据包含的范围不是特别地广。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值