
搜索-二分搜索
文章平均质量分 66
JeraKrs
本人目前就职于百度商业研发部,有需要内推的朋友简历可发我邮箱 jerakrs@qq.com
展开
-
Codeforces 590B Chip 'n Dale Rescue Rangers(二分)
题目链接:Codeforces 590B Chip ‘n Dale Rescue Rangers解题思路二分时间,判断是否可行。判断方法为先处理出在风的作用下会移动到哪里,然后看最后用最大速度是否能到达目的地。代码#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;原创 2015-11-02 11:03:57 · 742 阅读 · 0 评论 -
uva 1447 - Malfatti Circles(几何+二分)
题目链接:uva 1447 - Malfatti Circles#include #include #include #include using namespace std;const double eps = 1e-9;const double pi = 4 * atan(1.0);struct Point { double x, y; void read()原创 2015-08-15 10:56:21 · 786 阅读 · 0 评论 -
uva 1473 - Dome of Circus (几何 + 二分)
题目链接:uva 1473 - Dome of Circus#include #include #include #include using namespace std;const int maxn = 10005;const double inf = 0x3f3f3f3f3f3f3f3f;const double eps = 1e-9;struct Poin原创 2015-08-15 10:00:24 · 759 阅读 · 0 评论 -
Codeforces 484E Sign on Fence(可持久化线段树+二分)
题目链接:Codeforces 484E Sign on Fence题目大意:给定给一个序列,每个位置有一个值,表示高度,现在有若干查询,每次查询l,r,w,表示在区间l,r中,连续最长长度大于w的最大高度为多少。解题思路:可持久化线段树维护区间合并,前端时间碰到一题可持久化字典树,就去查了一下相关论文,大概知道了是什么东西。将高度按照从大到小的顺序排序原创 2014-11-07 00:31:22 · 2381 阅读 · 0 评论 -
Codeforces 484B Maximum Value(高效+二分)
题目链接:Codeforces 484B Maximum Value题目大意:给定一个序列,找到连个数ai和aj,ai%aj尽量大,并且ai≥aj解题思路:类似于素数筛选法的方式,每次枚举aj,然后枚举k,每次用二分找到小于k∗aj并且最大的ai,维护答案,过程中加了一些剪枝。#include #include #include using namespace std;原创 2014-11-06 23:54:59 · 1921 阅读 · 0 评论 -
Codeforces 483B Friends and Presents(二分+数论)
题目链接:Codeforces 483B Friends and Presents题目大意:要将1~v直间的数分配到两个集合中,第一个集合需要cnt1个数,第二个需要cnt2个数,第一个集合中的数不能是x的倍数,同理第二个集合不能是y的倍数,两集合元素不能相同,问说v最小可以为多少。解题思路:这题比第三题要难,想了有一会。二分答案,v,然后判断。判断的时候只要分原创 2014-11-03 09:54:31 · 1365 阅读 · 0 评论 -
Codeforces 479D Long Jumps(贪心+二分)
题目链接:Codeforces 479D Long Jumps题目大意:valery是个体育老师,现在他要为学生考跳远,女生标准为x,男生为y,现在一个长为L的刻度尺,有N个刻度,给定N个刻度,现在为说还需要加几个刻度才能测量x,y这两个长度。解题思路:因为总共就x,y两个长度,所以最多加两个刻度。所以只要判断不加和加一个的情况即可。先枚举每个刻度a[i],然后原创 2014-11-02 23:38:00 · 1497 阅读 · 0 评论 -
zoj 3820 Building Fire Stations(二分+bfs)
题目链接:zoj 3820 Building Fire Stations题目大意:给定一棵树,选取两个建立加油站,问说所有点距离加油站距离的最大值的最小值是多少,并且任意输出一种建立加油站的方式。解题思路:二分距离判断,判断函数的复杂度是o(n),这样的复杂度应该是o(nlogn),即使常数系数偏大,但是居然跑了4.5s,也是醉了。判断函数里面做了3次bfs,但是每次bfs节点原创 2014-10-13 09:08:23 · 1676 阅读 · 0 评论 -
zoj 3806 Incircle and Circumcircle(二分)
题目链接:zoj 3806 Incircle and Circumcircle题目大意:给定三角形的内接圆半径和外切圆半径,求三角形的三边长。解题思路:以等腰三角形去构造,确定外切圆半径的时候,内切圆半径的范围为0−3‾‾√R,二分判断即可。#include #include #include #include using namespace std;double原创 2014-08-31 21:56:09 · 936 阅读 · 0 评论 -
hdu 5033 Building(单调性+二分)
题目链接:hdu 5033 Building题目大意:城市里有n座摩天大厦,给定每栋大厦的位置和高度,假定大厦的宽度为0。现在有q次查询,表示人站的位置,人的高度视为0,问说可以仰望天空的角度。解题思路:比赛的时候用单调性优化直接给过了,对于每个大厦来说,记录左右两边与其形成斜率最大的大厦序号以及斜率,然后每次查询是,通过二分确认人所在位置属于哪两栋大厦之间,然后分别向左向右确认角原创 2014-09-22 13:44:11 · 1026 阅读 · 0 评论 -
Codeforces 460C Present(二分)
题目链接:Codeforces 460C Present题目大意:有n盆花,可以浇m次水,每次浇水的范围为w,被浇到水的花长高1米,问说可以使最矮的花的最高值是多少解题思路:二分答案,遍历判断一遍。#include #include #include using namespace std;const int maxn = 1e5+5;const int inf =原创 2014-08-25 00:07:58 · 1766 阅读 · 0 评论 -
uva 10566 - Crossed Ladders(几何+二分)
题目链接:uva 10566 - Crossed Ladders二分答案,几何计算出对应的H,与C比较#include #include #include #include using namespace std;const double eps = 1e-9;double X, Y, C;double solve (double a) { doubl原创 2015-08-15 10:50:42 · 684 阅读 · 0 评论 -
uva 1146 - Now or later(二分+2sat)
题目链接:uva 1146 - Now or later二分答案,然后间隔小于当前值的即为一组矛盾关系,对所有关系做2sat。#include #include #include #include #include using namespace std;const int maxn = 2005;int N, T[maxn][2];struct Tw原创 2015-09-07 22:59:47 · 559 阅读 · 0 评论 -
uva 11090 - Going in Cycle!!(二分+BellmanFord)
题目链接:uva 11090 - Going in Cycle!!二分环的平均值,叫每条边减掉该值,判断是否有负环存在,存在则不行。#include #include #include #include #include using namespace std;const int maxn = 55;const double eps = 1e-3;str原创 2015-09-07 22:44:34 · 524 阅读 · 0 评论 -
hdu 5531 Rebuild(三分)
题目链接:hdu 5531 Rebuild解题思路假设每条边的长度为a,b,c,d。那么如果r0=xr_0=x,那么r1=a−x,r2=b−a+x,r3=c−b+a−x...r_1=a-x,r_2=b-a+x,r_3=c-b+a-x...依次类推,可以确定x的取值范围[L,R],然后在区间上三分即可。注意,如果n为奇数是,L=R,即最后r0=c−b+a−r0r_0 = c - b + a - r_0原创 2015-11-02 10:32:05 · 1329 阅读 · 0 评论 -
hihoCoder 1249 Xiongnu's Land(二分)
题目链接:hihoCoder 1249 Xiongnu’s Land代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long ll;const int maxn = 10005;int N, R, L[maxn], T[maxn], W[maxn], H[max原创 2015-11-16 15:38:57 · 1389 阅读 · 0 评论 -
hdu 4606 Occupy Cities(几何+二分+KM)
题目链接:hdu 4606 Occupy Cities解题思路首先预处理出两两点之间的最短距离,然后二分背包容量,用KM判断是否可行。预处理部分,将所有线段的端点加入考虑,枚举两点之间直线,如果与线段相交则不可以移动。然后用floyd处理出点点之间的最短距离。判断部分,因为有P个士兵,所以对于一个距离,可以根据占领顺序处理出有向边,然后用KM处理至少需要多少个士兵。代码#include <cstdi原创 2015-10-26 21:26:17 · 719 阅读 · 0 评论 -
zoj 3913 Bob wants to pour water(二分)
题目链接:zoj 3913 Bob wants to pour water解题思路二分高度,判断容量。代码#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;const int maxn = 1e5 + 5;const double eps = 1e-8;co原创 2015-10-22 19:09:32 · 570 阅读 · 0 评论 -
hdu 5432 Pyramid Split(二分)
题目链接:hdu 5432 Pyramid Split#include #include #include #include using namespace std;const int maxn = 10005;const double eps = 1e-4;int N;double A[maxn], B[maxn];double judge(double h)原创 2015-09-12 22:06:52 · 659 阅读 · 0 评论 -
uva 11865 - Stream My Contest(二分+有向最小生成树)
题目链接:uva 11865 - Stream My Contest二分带宽,然后判断最小生成树是否小于cost值。#include #include #include #include using namespace std;typedef long long ll;const int inf = 0x3f3f3f3f;const int maxn = 1原创 2015-09-07 23:10:42 · 939 阅读 · 0 评论 -
uva 1475 - Jungle Outpost(二分+平面相交)
题目链接:uva 1475 - Jungle Outpost#include #include #include #include #include #include using namespace std;typedef pair pii;const double pi = 4 * atan(1);const double eps = 1e-8;inline原创 2015-08-21 23:03:21 · 781 阅读 · 0 评论 -
uva 1298 - Triathlon(二分+平面相交)
题目连接:uva 1298 - Triathlon#include #include #include #include #include #include using namespace std;typedef pair pii;const double pi = 4 * atan(1);const double eps = 1e-8;inline int d原创 2015-08-21 22:59:37 · 703 阅读 · 0 评论 -
uva 11978 - Fukushima Nuclear Blast(二分+几何)
题目链接:uva 11978 - Fukushima Nuclear Blast二分,圆和多边形面积交。将多边形拆成n份三角形(每两点与圆心构成),计算有向面积。每个三角形和圆的面积分四类讨论。#include #include #include #include #include using namespace std;const double pi = 4原创 2015-08-19 23:44:25 · 789 阅读 · 0 评论 -
uva 1463 - Largest Empty Circle on a Segment(二分+三分+几何)
题目链接:uva 1463 - Largest Empty Circle on a Segment二分半径,对于每个半径,用三分求出线段到线段的最短距离,根据最短距离可以确定当前R下每条线段在[0,L]上的可行区间,存在一个点被可行区间覆盖n次。#include #include #include #include #include using namespac原创 2015-08-19 23:41:14 · 862 阅读 · 1 评论 -
uva 10341 Solve It(二分搜索)
题目连接:10341 Solve It题目大意:根据给出的数学公式,在[0,1]上求解。解题思路:二分搜索, 主要注意一下边界和精度就可以了。#include #include #include #include double p, q, r, s, t, u, cur;double count(double x) { return p *原创 2013-08-22 23:47:28 · 1189 阅读 · 0 评论 -
uva 714 Copying Books(二分法求最大值最小化)
题目连接:714 - Copying Books题目大意:将一个个数为n的序列分割成m份,要求这m份中的每份中值(该份中的元素和)最大值最小, 输出切割方式,有多种情况输出使得越前面越小的情况。解题思路:二分法求解f(x), f(x) = 0说明可以满足,f(x) 就是当前最大值为x的情况最少需要划分多少份-要求份数(如果f(x ) >= 0 说明符合要求而且还过于满足,即原创 2013-08-24 13:34:35 · 2169 阅读 · 0 评论 -
uvalive 3971 - Assemble(二分搜索 + 贪心)
题目连接:3971 - Assemble题目大意:有若干个零件, 每个零件给出的信息有种类, 名称, 价格, 质量, 现在给出一个金额, 要求在这个金额范围内, 将每个种类零件都买一个, 并且尽量让这些零件中质量最小的越大, 输出质量最小的值。解题思路:首先可以用二分搜索确定质量, 然后在搜索的过程中要判断这个质量是否能被满足, 判断函数可以用贪心, 在每一类的零件中选择原创 2013-08-31 17:47:58 · 2117 阅读 · 0 评论 -
uvalive 3635 - Pie(二分搜索)
题目连接:3635 - Pie题目大意: 有m个派, 要分给n + 1个人, 要求每个人拿到的大小相同, 并且每个人的派必须是一整块, 不能说分别从两个派切出一块凑成。 现在给出m个派的半径(派均为圆柱,高为1),输出每人可以拿到的最大派的体积。解题思路:二分查找。#include #include #include const int N = 10005原创 2013-08-31 16:31:28 · 1449 阅读 · 0 评论 -
poj 2418 Hardwood Species(二分)
poj 2418 - Hardwood Species题目大意:给出一系列字符串,统计每个字符串出现的概率(保留4位小数)。解题思路:一开始看到时间10s,觉得是水题,就很嘚瑟用暴力去做,结果超时了,后来觉得数据可能比较大,想到二叉树,不过觉得用二分貌似也可以,就试着做了了一下。#include #include #include using name原创 2013-10-19 22:49:04 · 1103 阅读 · 0 评论 -
uva 138 - Street Numbers(等差数列求和)
题目链接:138 - Street Numbers题目大意:找到10组a和b,使得sum[1,a - 1] == sum[a, b]。解题思路:先用二分做了一遍,枚举b,二分a,但是这样很慢,这能求出答案后把表输出来。二分:#include #include long long count(long long a, long long b) { long原创 2013-10-18 23:54:36 · 2266 阅读 · 0 评论 -
CodeForces 251A Points on Line(二分)
题目连接:CodeForces 251A Points on Line原创 2013-10-17 23:59:08 · 1410 阅读 · 0 评论 -
CodeForces 287B Pipeline(二分)
题目链接:CodeForces 287B Pipeline题目大意:自来水厂要为n个客户供水,现在有k - 1种分离器,分离器的out口分别为2~k。问说给出n和k,最少需要多少的分离器可以满足所有客户供水,不能满足输出-1。解题思路:一开始用遍历试了一下,超时了,后来大伙伴告诉我们说二分搜索分两种,其中一种就是二分答案,然后就向着这个方向去做了,结果发现本题的问题不是搜索原创 2013-10-17 23:48:39 · 1864 阅读 · 0 评论 -
CodeForces 275C k-Multiple Free Set(二分)
题目链接:CodeForces 275C k-Multiple Free Set题目大意:给出n和k,然后给出元素个数为n的集合num,现在要从num集合中挑选出尽量多的元素组成新的集合,新的集合的要求是集合中不存在元素x , y(x 解题思路:将num数组排序,对应每个数值的num[i] * k进行二分搜索,如果搜索到,cnt--。这里有两个坑点:1、因为原创 2013-10-17 23:58:07 · 1571 阅读 · 0 评论 -
uva 10487 Closest Sums(二分搜索)
题目连接:10487 - Closest Sums题目大意:给出n 个数值, 在对应给出m个查找数值,要求每个查找数值在最先给出的n个数值中找到两个数值,是的这两个数值的和是所有任意两两数值的和中最接进查找数值的。解题思路:将n个数任意两两数值的和计算出来后储存在数组当中,然后从小到大排列,最后用二分的方法查找,注意有两个的话输出最小的。#include #i原创 2013-08-23 23:49:51 · 1176 阅读 · 0 评论 -
uvalive 2949 - Elevator Stopping Plan(贪心+二分)
题目连接:2949 - Elevator Stopping Plan题目大意:某个抠门的公司只有一个电梯, 现在有n 个人从1楼, 他们有各自想要到达的楼层, 然后电梯每上一楼需要4 秒, 每在一个楼层开门需要10 秒, 然后然爬楼梯的话需要20一楼。问, 如何用最短的时间让所有人都到达各自想要到的楼层。解题思路:因为人可以爬楼梯, 所以可以在某个楼层下楼之后走楼梯到达想要原创 2013-09-01 15:35:05 · 1665 阅读 · 0 评论 -
uva 11129 - An antiarithmetic permutation(递归)
题目连接:11129 - An antiarithmetic permutation题目大意:给出一个数值n, 要求用0~n - 1这n个数组成一个序列,使得这个序列的所有长度大于三的子序列都不是等差数列。解题思路:每次把数列的奇数位和偶数位分开放到两边, 递归到最后就是答案。#include #include const int N = 10010;in原创 2013-08-26 10:43:09 · 1155 阅读 · 0 评论 -
uva 1335 - Beijing Guards(二分)
题目链接:uva 1335 - Beijing Guards题目大意:有n个人为成一个圈,其中第i个人想要r[i]种不同的礼物,相邻的两个人可以聊天,炫耀自己的礼物。如果两个相邻的人拥有同一种礼物,则双方都会很不高兴,问最少需要多少种不同的礼物才能满足所有人的需求,假设每种礼物有无限多个。解题思路:自己想没有什么思路,参照大白书上的解释,琢磨了一下。如果n为偶数的话,a原创 2013-12-08 22:20:52 · 1719 阅读 · 1 评论 -
uva 1422 - Processor(二分+优先队列)
题目链接:uva 1422 - Processor题目大意:有一个机器要处理一些问题,给出这些问题可以开始的时间和必须完成的时间,以及任务的工作量,问说机器必须以最少每秒多少得工作量才能完成这些任务。解题思路:二分答案,答案的上限是MaxWork * MaxN(全在一秒内完成)。然后就是判断说在c的工作量小是否能完成任务。因为处理一个问题的时间可以不连续,所以给解题增加了难原创 2013-12-17 00:25:28 · 2846 阅读 · 0 评论 -
uva 11627 - Slalom(贪心+二分)
题目链接:uva 11627 - Slalom原创 2013-12-17 23:55:32 · 2017 阅读 · 0 评论 -
hdu 4717 The Moving Points(三分)
题目连接:hdu 4717 The Moving Points题目大意:给出n个点,每个点有初始的位置(x,y),以及单位时间内移动的距离,向量形式给出。且在哪一个时刻中,n个点之间两两距离的最大值最小,最小值为多少。解题思路:类似与二分算法的三分,因为如果将时间t和所要求的两两之间距离的最大值d做成一个函数曲线,单调性应该是先递减后递增的,所以用三分法求极值。#include原创 2014-05-18 07:37:59 · 1172 阅读 · 0 评论