二分
帐下幕僚
我只是一个普普通通的大学学生,我来到这里是想获得我在学校所不能得到的知识。
展开
-
hdu1551题解(wa了好多次)
二分题,卡精度,刚开始我是先转化为整数做的,wa到死,破水题!!!#include <stdio.h> #include <stdbool.h> int N,K; double cable[10001]; bool is_ok(double size) { int i,sum=0; for(i=0;i<N;i++) sum+=(int)(cable[i]/size);原创 2016-05-21 20:15:25 · 403 阅读 · 0 评论 -
poj3685Matrix(二分)
看到题完全没想到是二分(太弱,太渣了),别人告诉本弱这道题是二分依旧不会做。 思路:二分答案ans,然后枚举j,然后再二分i,求出矩阵中小于等于ans元素的个数…… 注意二分时如果l或r出现负数,最好直接向下取整,否则如(-1+0)/2=0,本来是想让他等于-1的,这样就可能进入死循环。#include <iostream> #include <stdio.h> #include <algori原创 2016-08-23 09:45:54 · 511 阅读 · 0 评论 -
poj2296 Map Labeler(2-sat+二分)
由于每个点要么在label的顶边或者在label的底边且在中间,并且有且只有一个在label上,所以就可以转化为2-sat问题。 建图如下: 不妨设 点yi<=yj。(i表示向下,!i表示向上) if(|xi-xj|>=d) continue; if(yj-yi>=2*d) continue; if(yj-ji>=d) i||!j else if(yj-ji>0) i&&!j e原创 2016-08-30 15:57:36 · 276 阅读 · 0 评论 -
hdu4430 Yukari's Birthday(二分)
题意: 给定一个n,计算满足x^1+x^2+……+x^r=n且使x*r最小(如果有多个,取r最小的那个)的x,r值。 由于2^40大于1e12,所以我们可以枚举r从1到40,但这样可能会超时,所以可以根据3^26大于2e12,我们可以枚举r从1到26,并单独计算x=2的情况。 对于给定的每个r,x^1+x^2+……+x^r这个式子就关于x单调递增,所以就可以用二分来做。#include <io原创 2016-08-29 20:32:34 · 389 阅读 · 0 评论 -
codeforces672Robin Hood(经典二分)
怎么都没想到是二分,我真弱爆了。 二分求出k天后最小的人的财富, 理由: 最小的人的财富必然小于或等于平均数向下取整(记为la), 所以范围在0~la之间,二分答案。 再用二分求出k天后最大的人的财富。相减即得答案。 注意:sum等可能会爆int.#include <iostream> #include <algorithm> #include <string.h> #include <原创 2016-07-02 20:52:58 · 311 阅读 · 0 评论 -
poj3518(Prime Grap 欧拉筛+二分)
用欧拉筛打表,二分搜索,过。。。。#include <iostream> #include <algorithm> #include <string.h> #include <stdio.h> using namespace std; #define ms(X) memset(X,0,sizeof(X)) bool isnP[1400000]; int mprime[110000],t=0; voi原创 2016-07-02 16:47:30 · 342 阅读 · 0 评论 -
hdu 2438题解
三分题,公式推不出来。。。。 汽车最高点离拐角的水平距离s=l*cos(sita)-x; 汽车最高点离拐角的垂直距离h= s*tan(sita)+w/cos(sita); 显然h先增后减,所以用三分求出h的最大值,然后与y一比即得答案 http://pic002.cnblogs.com/images/2011/276015/2011082521195360.jpg#include <stdi原创 2016-05-22 10:48:23 · 348 阅读 · 0 评论 -
zoj3203题解
三分查找入门题 算是二分查找的推广,但要求函数是在查找范围内是凸的或凹的.#include <stdio.h> #define esp 1e-6 double H,h,D; double func(double rnum) { double ll=rnum*H/(H-h); if(ll<=D) return ll-rnum; else return D+H-rnum-(H-原创 2016-05-21 22:18:08 · 459 阅读 · 0 评论 -
poj2785题解
二分经典题,注意边界,否则wa到。。。。 由于4个for必定wa,所以分别对a和b,c和d求和,然后对其中一个进行排序,二分查找#include <stdio.h> #include <stdlib.h> #include <string.h> int ab[4010*4010],cd[4010*4010]; int N; int mycmp(const void *a,const void *b原创 2016-05-21 17:12:36 · 465 阅读 · 0 评论 -
CodeForces749D(Leaving Auction) 二分二分二分
题意: 将会有 n 个人在竞价,一共叫了 n 次价(价格递增)。一个人可以叫多次价,但不会自己压自己的价 (例如 1 1 \n 1 2 这是不会出现的),当然也就会出现有的人没叫价。 现在有 q 个询问,每个询问为 有 k 个人没来,分别为 li ,现在求最后的winner和价格。 (所有的 k 加起来 < 200000)。 思路: 考虑第一小问,如果我们把每个人叫的最高价记录原创 2017-01-07 13:27:09 · 410 阅读 · 0 评论