码迷,mamicode.com
首页 > 其他好文 > 详细

UVa 1149 Bin Packing 题解

时间:2018-02-05 23:23:22      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:贪心   tin   post   效率   计数   blog   bsp   href   ++   

难度:α

用时:25 min

题目:??

代码:??

 

这是一道赤裸裸的贪心题。赤裸到和模版题差不多了。

 

所以下面长话短说。

 

朴素的算法是直接统计。

在这之上因为要贪心,所以做点小手段,记录一下可以被连带走的物体。

1 for (int i = 0; i < n; i++) {
2     if (taken[i]) continue;
3     ans++;
4     int iter = upper_bound(l, l+n, L-l[i]) - l; iter--;
5     while (iter > i && taken[iter]) iter--;
6     if (iter >= 0) taken[iter] = 1;
7 }

第 2 行就是被带走后的处理。不计数。这样其实效率比较低,我看排行上全是 10 ms 过,然而我 20 ms。(差不多了差不多了~~)

(我懒得写效率高的代码,不划算~~)

 

那么配对的方法是什么呢?用到了我今天才学会的 upper_bound。没错,我今天才学会。(这不是重点好吗)

 

upper_bound 找到第一个大于的位置。那么减去一个就是最后一个小于等于的位置。(这是我从紫书上学来的技巧~~)

 

下面的就是找到一个还没有被带走的物体了。注意边界问题,小心 RE。(我恨 RE !!)

 

2018-02-05

UVa 1149 Bin Packing 题解

标签:贪心   tin   post   效率   计数   blog   bsp   href   ++   

原文地址:https://www.cnblogs.com/Alrond/p/8419550.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!