二分查找
文章平均质量分 67
cscoder
这个作者很懒,什么都没留下…
展开
-
POJ3273:Monthly Expense
POJ3273:Monthly Expense题目大意:给定n个数据,将这n个数据分成m组,使得每组数据值和尽可能的小,输出所有组中最大的和。解法很巧妙,开始的时候没想到用二分法解,想暴力枚举过。。后来看了别人的解题报告,就考虑率用二分法解。题目在选取元素的时候很巧妙,用着n个数据分为一组最大的值到n个数据之和,作为二分的对象,这样必然有序,然后是选取改变上下界的函数,这里采用给定一个分法的上原创 2012-04-11 21:57:09 · 352 阅读 · 0 评论 -
hdu 3715 Go Deeper
Go Deeper2 - sat建图:x[a[i]] = 1, x[a[i] + n] = 0c[i] == 0 a[i] + n --> b[i] b[i] + n --> a[i]c[i] == 1 a[i] + n --> b[i] + n b[i] + n --> a[i] + n a[i] ---> b[i]原创 2012-10-22 22:59:48 · 546 阅读 · 0 评论 -
hdu 3622 Bomb Game
Bomb Game很裸的2-sat。二分枚举半径,然后对于每个点i枚举j,其中j不是i'.如果dist(i,j)小于半径,那么就连边i->j', j->i',然后判断是否出现冲突。由于用double的话会出现精度误差,而给定点的坐标都是整数.所以,我们可以将其转化为整型处理,不进行开方操作,而比较的时候也是枚举两点间的距离。最后输出答案的时候在开方就行了。/*原创 2012-10-20 22:51:08 · 432 阅读 · 0 评论 -
Codeforces round 112 DIV2 B Burning Midnight Oil
题目很简单,开始的时候没想到用二分,经过一次二分搜索的学习后,对二分搜索的应用有了深刻的认识,然后就做了这个题目。同样是利用二分搜索,属于找下界的题目,代码很简单,不过需要注意两种情况:1. 当n#include#includeusing namespace std ;bool judge(int v) ;int n ;int k ;int main(){ scanf("原创 2012-05-02 01:03:50 · 480 阅读 · 0 评论 -
POJ 2785:4 Values whose Sum is 0
http://poj.org/problem?id=2785这道题目意思很简单,但是数据量很庞大,就需要设计比较好的算法。方法一:利用二分搜索算法。根据题意,我们将数据分为左右两个部分,然后将左侧的两列之和加起来,然后排序,在对右侧的两列加起来,二分搜索相应的解的上下限。这里需要注意对一个数出现的上下界的寻找办法,代码要注意,也可以通过STL中的lower_bound与upperbound原创 2012-04-25 12:42:45 · 616 阅读 · 0 评论 -
POJ3258:River Hopscotch
http://poj.org/problem?id=3258题目意思很清楚,就是移出m块石头使得每头牛跳跃的最短距离最大。开始的时候想用贪心算法来解,但是发现题目的贪心选择不明确,并且数据量很大,于是就放弃了。因为最近在学二分搜索,并且有这一题,所以就思考着用二分搜索来解决这道题目。以一数值为牛必须跳跃的最短距离(当作一个衡量标准),然后判断在该最短距离下,会移除多少石头,如果移除的石头数原创 2012-04-12 17:07:12 · 409 阅读 · 0 评论 -
浅谈二分搜索
二分搜索算法在搜索以及ACM中是很常用的。二分搜索算法是分治算法的一个典型的应用。但是二分搜索算法的正确性确实我们必须注意的一个问题。下面就介绍下二分搜索算法:二分搜索算法的主要思想:对于一个已排序的元素序列,我们每次选取包含问题解的区间,然后求解其区间的中点,然后将中点元素的值与对应的键值进行比较,找出其对应的包含问题解的子区间。这样逐步将包含问题解的区间缩小,直至找到问题的解。例如:从原创 2012-04-11 18:15:06 · 659 阅读 · 0 评论 -
POJ1905:Expanding Rods
http://poj.org/problem?id=1905题目大意:一根棍子夹在两堵墙之间,加热之后会膨胀。求膨胀之后棍子中点距离水平的高度。利用勾股定理,二分求解。已知半径和弧度,假定所求高度为 m,棍子长度为 l,勾股定理可知圆半径为 (m * m + l * l /4)/(2*m)。利用半径对应求出的弧长的比较来判断二分区间。代码如下:#include #include原创 2012-04-11 16:19:41 · 309 阅读 · 0 评论 -
POJ 1743
Musical Theme用了一个星期的时间学了一下后缀数组,然后将罗穗骞论文上的题目都做完。有些题写起来太蛋碎了。。。这道题是论文上的第一道题目,还是蛮简单的。。直接二分长度l,利用height数组将后缀分组,然后判断同组的是不是存在排名第i和j的后缀使得abs(sa[i] - sa[j]) >= l。#include #define maxn 20005int r[m原创 2013-01-22 22:56:08 · 520 阅读 · 0 评论