搜索-二分
flowser
you are what you want to be
展开
-
LightOJ 1076 - Get the Containers
题意:有n个输奶管,内有一定牛奶,用m个存储罐装这些牛奶,不能分开装,多个管内的奶可以一起装,但一起是需按照顺序装,求满足的n个罐子中的最小容积。思路:确定号区间 的左右两边值后,二分搜索该区间内的值,满足则缩小范围,不满足则扩大范围,直到确定出最小值。代码:#include int num[1500];int n, m;int judge(int x)原创 2016-01-24 13:00:18 · 421 阅读 · 0 评论 -
POJ 2456 - Aggressive cows
题意:农夫有一个栅栏,包括n个隔间(给出其在栅栏的位置),C头牛,牛在同隔间会争斗,为防止它们争斗,给它们分隔间,让任意两头牛之间的最小距离尽可能大,求该最小距离。(最小距离最大值)思路:确定好左右区间,开始二分搜索最小距离的最大值,若满足要求,则扩大范围,否则缩小范围,直到找到为止代码:#include #include #include int num[原创 2016-01-24 13:18:13 · 243 阅读 · 0 评论 -
UVA1422 - Processor
题意: move onto: 将a,b上的积木清空,然后将a放在b上。 move over: 将a上的积木清空,然后将a放在b的最上方。 pile onto: 将b上的积木清空,然后将a和a上的积木放在b上。 pile over: 将a和上的积木放在b的随上方。 a和b同一个积木堆时,任何操做都时无效的。代码:#include <stdio.h>int place[25];原创 2016-02-13 20:37:42 · 344 阅读 · 0 评论 -
uva1450 - Airport
题意: 一飞机场,东西方向(W、E)有两个待飞通道,共用一个起飞车道, 每一时刻有w[i]和e[i]架飞机进入W和E跑道,且当前只能起飞一架飞机。飞机编号从0开始,求最大飞机编号的最小值 思路: 一开始没认真推敲题目意思,一位最大飞机编号只要看最终状态, 然后草写几行过样例就交了,WA后才注意要求最大飞机编号的最小值,每个时刻都要考虑。用二分搜索该最小值。 判断条件的话,需要每个时刻的最大原创 2016-02-14 20:29:09 · 310 阅读 · 0 评论 -
uva12124-Assemble
题意:有b块钱,n个配件及其种类,质量,价格,让你每种类型的配件各买一个,总价不超过b元,让品质最差的配件质量最好,求最小品质的质量最大值思路:二分最小质量的最大值,再用贪心的思想判断该质量是否可行,即排序每种配件的价格,判断时按价格从低到高扫描,选择到符合该质量的即可。代码:#include #include #include using names原创 2016-02-02 12:45:55 · 334 阅读 · 0 评论 -
LA3635 - Pie
题意:F+1个人,分N个圆形派(给出其半径),每个人必须得到的是整块派(不能由几块拼在一起),求每个人能分到的最大面积的派。思路:二分搜索最大面积的派,判断是否可行。代码:#include #include #include #include #include using namespace std;const int maxn = 10005原创 2016-02-02 13:00:22 · 329 阅读 · 0 评论 -
uva1335 - Beijing Guards
题意:n个人,每个人都想要礼物,相邻两个人会聊天炫耀礼物,不能让他们礼物相同,问至少要多少个礼物才能满足条件。思路:首先,偶数个人的话,礼物个数即为最大的两个邻居想要礼物数之和。 奇数个人的话比较复杂,二分搜索最小礼物个数p,将礼物分为左右两堆,左堆放x,右堆y(x+y=p),left[i],right[i]分别表示第i个人拿走了左,右两堆多少个礼物,让奇数号的人尽量原创 2016-02-02 14:38:27 · 348 阅读 · 0 评论