![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二分
文章平均质量分 72
commonc
这个作者很懒,什么都没留下…
展开
-
BZOJ3521: [Poi2014]Salad Bar
题目大意:有一个长度为n的字符串,每一位只会是p或j。求一个最长子串,使得不管是从左往右还是从右往左取,都保证每时每刻已取出的p的个数不小于j的个数。首先先扫一遍得到以每个点为左端点,只考虑从左向右取,最远能取到哪,并标记每一个点最早被哪一个点扫到然后再从后往前扫一遍,开两个栈,一个记录当前仍符合条件的右端点,一个记录已经被扫过的左端点,每当有元素从第一个栈里弹出时,就在第二个栈里原创 2016-05-11 19:08:21 · 1394 阅读 · 0 评论 -
BZOJ4411: [Usaco2016 Feb]Load balancing
题目大意:给定n个点,请你确定一条横线和一条竖线,使得平面划分成的四个区域内点最大值最小首先枚举横着的那条线,然后考虑在这条线上方随着竖线的平移,上面两个区域的max函数是一个单峰函数,下面同理,所以将两个函数取max之后还是一个单峰函数,那么我们就可以用二分或者三分来求这个峰,这个答案就是当横线在这里的最小值#include#include#include#incl原创 2016-09-07 11:15:34 · 854 阅读 · 0 评论 -
BZOJ2095: [Poi2010]Bridges
题目大意:给一张图,每条边有一个a到b的代价,同时还有一个b到a的代价,求一个经过所有边所有点的路径使得路径代价最大值最小首先知道要二分,这样这张图就变成了一些边固定了方向而另一些边两个方向都可以走,这就是一个经典的混合图欧拉回路问题,直接求解即可混合图欧拉回路知识点讲解戳→这里#include#include#include#include #define N原创 2016-09-05 19:43:27 · 1023 阅读 · 0 评论 -
BZOJ2280: [Poi2011]Plot
题目大意:给定n个点和m,要求把n个点分成m段,使得每段的最小覆盖圆的半径的最大值最小肯定能想到要二分答案,然后看看怎么判定对于每个点来说,需要找到序列中最远能到达的从他开始符合条件的点但是因为最小圆覆盖需要随机打乱点才能保证时间复杂度,所以我们不能依次推出最小覆盖圆,那么能想到二分但是每次检验是O(长度)的,而我们需要二分m次,直接二分可能会使时间复杂度变成O(logIN原创 2016-08-23 16:09:52 · 747 阅读 · 0 评论 -
BZOJ2525: [Poi2011]Dynamite
题目大意:给一棵树,书上有一些关键节点,要求你选m个点,使得关键节点到这些点中距离的最小值的最大值最小,求这个值先二分答案,转成判定性问题考虑我们已经知道覆盖范围了,那么我们就要用最少的点来覆盖整个树这一步用贪心就可以了,从下往上,直到必须放一个点的时候才放为什么是对的呢?我们考虑在一个不是必须放的地方放置了一个点,这样他们对于子树下面的影响是一样的,都是全部能原创 2016-08-31 15:25:31 · 806 阅读 · 0 评论 -
BZOJ4556: [Tjoi2016&Heoi2016]字符串
题目大意:给一个串和多组询问,每次询问S[a....b]的所有字串和S[c...d]这个字符串的最长公共前缀是多少 最长公共前缀啊,大概直接想到后缀数组二分RMQ之类的了但是现在有一个问题比较恶心,就是“S[a....b]的所有字串“和“从a....b开始的所有字串”还不太一样,因为有结束位置的限制,比如说从a位置开始的最长公共前缀是2,而从b开始的很长,那在算的时候肯定会选择b,然而原创 2016-05-29 11:00:50 · 537 阅读 · 0 评论 -
BZOJ2792: [Poi2012]Well
题目大意:给n个数,每个数可以减去一个非负整数,总修改代价为所有这些非负整数的和,求总代价在m之内且至少有一个数修改为0,max{|Xi - Xi+1|}的最小值先二分答案,然后对于每次的值求一个最小代价首先可以正反扫两遍求出每个点最大合法答案,在没有必须有0这个条件时,这个方案一定是最小的代价然后枚举0的位置,这样左右一定都是一个等差数列,这样对于每个数来说都对应一个区间,区间两个端原创 2016-06-30 15:20:45 · 834 阅读 · 0 评论 -
BZOJ3414: Poi2013 Inspector
题目大意:一天公司有n个员工和m个员工记录,每个员工只会在连续的一段时间内工作。现在给出m条记录分别是谁写的、什么时候写的以及写的时候除了他还有多少人。求最大的k使得前k条记录互不矛盾 挺神的题...首先二分答案转成判定性问题,这样记录就没有先后顺序之分了然后考虑什么情况会出现矛盾:1.记录本身的矛盾:两条记录是同一时刻,但人数不同 判断方法:这个是很显然的原创 2016-05-31 19:52:20 · 1078 阅读 · 0 评论 -
BZOJ3872: [Poi2014]Ant colony
题目大意:给一棵树,对于每个叶子节点,都有g群蚂蚁要从外面进来,每群蚂蚁在行进过程中只要碰到岔路,就将平均地分成岔路口数-1那么多份,然后平均地走向剩下的那些岔路口,余下的蚂蚁自动消失,树上有一个关键边,假如有一群蚂蚁通过了这条边且数量恰好为k,这k只蚂蚁就被吃掉,问一共有多少只蚂蚁被吃掉显然得从那条关键边倒着推以这条边作为这棵树的“根”,开始遍历其他的边,遍历到每条边的时候计算一原创 2016-05-18 19:13:59 · 978 阅读 · 0 评论 -
BZOJ3420: Poi2013 Triumphal arch
题目大意:给一颗树,1号节点已经被染黑,其余是白的,两个人轮流操作,一开始B在1号节点,A选择k个点染黑,然后B走一步,如果B能走到A没染的节点则B胜,否则当A染完全部的点时,A胜。求能让A获胜的最小的k 首先易知B不会走回头路,走回头路代表自己毫无贡献还让A多染了两次色所以B的路径就是从根到叶子节点先二分一下答案转成判定性问题然后TreeDP,f[i]表示当B现在在i时,需要原创 2016-05-29 13:30:18 · 987 阅读 · 0 评论 -
BZOJ3830: [Poi2014]Freight
题目大意:有两个城镇,从A到B需要的时间为S,然后有N辆列车需要从A到B再回来,任何时刻铁路上只能有向着同一个方向前进的列车,然后每辆列车有一个从A出发的最早出站时间,问所有列车全部回到A站的最早时间首先经过分析可以得出,这些列车是分批行进的,就是一批列车从A到B再回来,然后下一批列车再走...一定不会出现某辆列车在某一批到了B而留在那里没有跟着下一波回A的浪潮回来而留守B地等待下一次的情况,原创 2016-05-12 18:53:05 · 1142 阅读 · 0 评论 -
BZOJ2216: [Poi2011]Lightning Conductor
题目大意:已知一个长度为n的序列a1,a2,...,an。对于每个1额,不写题解了,好像也不一定能写出来直接上链接吧-> neither_nor的题解#include#include#include#include#define N 500010using namespace std;int a[N];struct ppp {int w,l,r;}p[原创 2016-10-10 09:37:25 · 634 阅读 · 0 评论