![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
bindary search
zyz_3_14159
这个作者很懒,什么都没留下…
展开
-
LightOJ-1048-greedy+bindary search
题目大意:给定n个数字,需要把它最多分成k段,令ans是这k段中和最大的那个数,要使得k最小,求k并且输出k段合并后的数据;题目解析:一开始一直在想这道题目应该是区间dp,区间dp确实可以用O(n^2)的方法把它求出来,但是之后输出k段的时候发现就不太对劲了,dp的过程不会算出来这个,所以很纠结;其实假设我们取定了ans,那么我们在合并的时候应该尽可能使得和接近ans,这样才是最优的,所以这里原创 2016-10-26 23:16:52 · 342 阅读 · 0 评论 -
POJ-3977-折半枚举,二分
题目大意:有n个数,要求它的一个子集,使得这个子集的和的绝对值最小,如果有多种情况,选个数最少的那种;题目解析:直接暴力枚举肯定超时,所以先枚举一半,另一半在枚举的过程中可以二分前一半;AC代码:#include#include#include#include#include#include#includeusing namespace std;typedef long原创 2017-04-16 12:24:23 · 381 阅读 · 0 评论 -
POJ-3685-二分
题目大意:有一个n*n的矩阵,第i行第j列元素的值为i*i+100000*i+j*j-100000*j+i*j;问第m大的元素是什么;题目解析:注意到如果j确定的话,那么函数就是关于i的增函数,所以可以二分再二分;AC代码:#include#include#include#include#includeusing namespace std;typedef long lon原创 2017-04-12 19:16:02 · 1625 阅读 · 0 评论 -
codeforces785C-bindary search,math
首先居然跟出题人的小号分在一个room还被hack了无数次,不知道该不该开心呢?题目大意:有一个谷仓容量为n,每天一早有m吨谷物运进来,但晚上有跟天数一样的老鼠出来吃,问第几天谷仓第一次没有谷物;题目解析:一开始想着二分,还要注意边界不能爆LL,想一下最大的答案就是输入数据是1AC代码:#include#include#include#include#includeusi原创 2017-03-16 10:45:23 · 432 阅读 · 0 评论 -
LA - 4254,二分,优先队列,贪心
题目大意:有n个程序,每个程序可以在给定的时间段【l,r】中完成,可以不连续,工作量为w;问使cpu运行速度的最大值最小并且能使得所又程序完成的速度是多少?题目解析:看到最大值最小肯定就是二分了,关键难点在于判断是否可以:首先肯定cpu一直以最大速度运行,然后需要贪心先把所有程序按照开始时间从小到大排序之后枚举每一个时间让截止时间最近的程序先完成,这就想到了要用优先队列了;AC代码:#原创 2017-03-29 19:04:05 · 392 阅读 · 0 评论 -
POJ-2104-线段树,bindary search
题目大意:给定n个数字和m次询问,问区间[l,r]上第k大的数字是多少;题目解析:线段树,每个节点保存的是一个序列,所以pushup的时候需要用merge,归并排序;如果是第k大的,那么小于等于那个数字的就有k个,所以可以二分;AC代码:#include#include#include#include#include#include#define lson l,m,rt<<原创 2016-11-26 23:54:07 · 230 阅读 · 0 评论 -
POJ-2112-网络流,二分,最短路
题目大意:有k个奶牛加工机器和c头奶牛,每个奶牛只能去一个机器,每个机器最多只能加工m头奶牛,并且给出所有点的邻接矩阵,问使得所有奶牛都被加工的时候,其中奶牛走的最远的路最小是多少;题目解析:源 容量1 ->牛 容量1 -> 机器 容量m ->汇;先用floyd把所有点的最短路求出来,之后二分最长路的最小值即可;AC代码:#include #include #inclu原创 2016-12-04 16:00:53 · 249 阅读 · 0 评论 -
codeforces-729C-bindary search,math
题目大意:给定n辆车,每辆车有自己的属性价格和油箱容量,开始位置在0,终点在s,途中会有k个加油站,途径加油站的时候,油箱会被加满并且不需要钱,问最少要花多少钱买车;题目解析:因为每次途径加油站都会加满,所以尽可能每次把油都会用完,对于每段路程都可以把它分成两部分,解方程组即可,对于油箱容量,容量越大肯定可以,所以最小容量我们应该二分出来,最后找一下那个钱最少并且油箱容量大于等于最小容量即可;原创 2016-11-20 23:44:44 · 299 阅读 · 0 评论 -
codeforces-734C-greedy,bindary search
题目大意:有n个药剂需要制作,制作每个药剂需要x秒钟,并且最初有m的能量;魔法师现在有两种催化剂,第一种可以消耗cost1[i]的能量,使得所有药剂的所需时间变为a[i];第二种也是消耗能量,使得b[i]个数的药剂瞬间制作好;但两种催化剂每种只能最多选择一种,问最后最少需要多少时间;题目解析:首先我们将试剂1按照cost升序,遍历一遍,便利的时候二分当前剩余能量在第二种试剂可以获得的最大收益(原创 2016-11-17 15:35:03 · 396 阅读 · 0 评论 -
LightOJ-1062-bindary search
题目大意:给定x,y,c,求街道的长度;题目解析:初看应该是个平面几何的题目,里面肯定要根据相似三角形来列出等式从而求出街道的长度;不难求出等式pow(x*x-a*a,0.5))+1.0/(pow(y*y-a*a,0.5)=1/c;发现等式左边是个单调函数,所以很简单就想到要二分;AC代码:#include#include#include#include#include原创 2016-11-07 23:47:16 · 218 阅读 · 0 评论 -
LA-3211-TwoSAT,二分
题目大意:有你个飞机需要降落,每个飞机有两个可选时间降落,求所有飞机降落时间的最小值的最大值;题目解析:二分那个值,然后枚举每个时间,如果冲突的话,假设x,y冲突,那么连接x^1->y,y^1->x,然后判断是否可行就可以了;AC代码:#include#include#include#include#include#includeusing namespace std;c原创 2017-05-27 15:18:32 · 221 阅读 · 0 评论