二分
文章平均质量分 74
BraketBN
这个作者很懒,什么都没留下…
展开
-
【POJ1743】Musical Theme【后缀数组】【二分】
数据太水,可以把自己程序卡掉。先把数列差分,然后找最长不重叠子串就行了。忘了把差分后数列长度减1,无限WA。#include #include using namespace std;const int maxn = 20005, M = 200;int sa[maxn], rank[maxn], height[maxn];inline int原创 2016-02-10 21:28:13 · 423 阅读 · 0 评论 -
【BZOJ4078】[Wf2014]Metal Processing Plant【2-SAT】【二分】【二分图】【并查集】
【题目链接】考虑比较暴力的方法,我们枚举两个集合的最大值S1, S2,那么我们可以用2-SAT来判断合法不合法(如果i, j之间的值大于S1,那么如果i在第一个集合,j只能在第二个集合,其他类似)。我们将边权从大到小排序,依次枚举S1,发现S2是单调的(S2越大,越可能合法),于是可以二分S2了。另外还有个优化,把枚举S1的过程看成加边的过程,我们发现当这个图不是二分图的时候就可以原创 2016-07-09 09:46:47 · 1844 阅读 · 0 评论 -
【BZOJ2348】[Baltic 2011]Plagiarism【二分】【或 Two Pointers】
【题目链接】大水题竟然WA了2发。。(1)二分找到位置后,贡献应该是id - l...(2)被卡精度了/* Forgive me Not */#include #include #include using namespace std;typedef long long LL;const int maxn = 100005;int n, num[max原创 2016-06-02 16:55:57 · 461 阅读 · 0 评论 -
【BZOJ2654】tree【二分】【最小生成树】
【题目链接】奇怪的二分。考虑给白边的边权加上一个数,这个数越大,MST时选的白边就越少。注意排序时候,如果边权相等,要先选白边。/* Forgive me Not */#include #include #include using namespace std;const int maxn = 50005, maxm = 100005, inf = 0x3f3原创 2016-06-02 16:03:48 · 627 阅读 · 0 评论 -
【BZOJ1196】[HNOI2006]公路修建问题【二分】【并查集】
【题目链接】二分最大边权,把不大于mid的边做个生成树。因为只要保证最大值不超过mid即可,具体边权、边权总和无所谓的。/* Telekinetic Forest Guard */#include #include #include using namespace std;const int maxn = 10005, maxm = 20005;int n,原创 2016-05-20 15:22:09 · 439 阅读 · 0 评论 -
【BZOJ1271】[BeiJingWc2008]秦腾与教学评估【二分】【神题】
【题目链接】神题!利用奇数只有一个的性质,二分位置,算前缀和,如果前缀和是奇数,那么答案一定在前面,否则有可能在右边。注意二分时候有可能超int,要开LL。/* Pigonometry */#include #include #include using namespace std;typedef long long LL;const int maxn =原创 2016-04-23 10:50:48 · 567 阅读 · 0 评论 -
【POJ2391】Ombrophobic Bovines【二分】【Floyd】【最大流】
【题目链接】论文题,见【网络流建模汇总】。注意:1、要算最短路。2、每次加边不能只加已经存在的边,而是枚举点,添加最短路径。3、自己到自己也要连边。4、注意Floyd要开long long。5、注意判断-1。数据地址:http://contest.usaco.org/MAR05_4.htm/* Pigonometry */#includ原创 2016-04-04 21:36:24 · 535 阅读 · 0 评论 -
【BZOJ1738】[Usaco2005 mar]Ombrophobic Bovines 发抖的牛【二分】【Floyd】【最大流】
【题目链接】同【POJ2391题解】/* Pigonometry */#include #include using namespace std;typedef long long LL;const int maxn = 1005, maxm = 100005, maxq = 10000, inf = 0x3f3f3f3f;const LL infinf = (LL)原创 2016-04-04 21:41:04 · 721 阅读 · 0 评论 -
【BZOJ2876】[Noi2012]骑行川藏【二分】【拉格朗日乘数法】
【题目链接】显然是一个约束条件下多元函数最值问题,那么就用拉格朗日乘数法就行了。然后二分lambda的值,解方程。具体见POPOQQQ大爷的题解【POPOQQQ的题解】/* Telekinetic Forest Guard */#include #include #include using namespace std;typedef long double原创 2016-05-03 11:40:01 · 496 阅读 · 0 评论 -
【BZOJ1243】[Seerc2007]Showstopper【二分】
【题目链接】同【BZOJ1271】但是读入是NOI难度。#include #include #include using namespace std;typedef long long LL;const int maxn = 200005;int n;char str[10000];struct _data { int s, e, d;} p[maxn];原创 2016-05-24 16:48:37 · 390 阅读 · 0 评论 -
【BZOJ1486】[HNOI2009]最小圈【SPFA判负环】【01分数规划】
【题目链接】没写过dfs的spfa,写一发。01分数规划裸题。/* Telekinetic Forest Guard */#include #include #include using namespace std;typedef double DB;const int maxn = 3005, maxm = 10005;const DB inf = 1原创 2016-05-24 11:46:24 · 589 阅读 · 0 评论 -
【BZOJ1305】[CQOI2009]dance跳舞【最大流】【二分】
【题目链接】看了【POPOQQQ的题解】,建图比较厉害。写网络流第一次把点开小了...orz/* Pigonometry */#include #include #include using namespace std;const int maxn = 255, maxm = 10005, maxg = 55, maxq = 10000, inf = 0x3f3f原创 2016-04-25 22:24:39 · 812 阅读 · 0 评论 -
【Codeforces613B】Skills【二分】【枚举】【贪心】
题意:有n个数,可以将其中一个数字加一,最多操作m次。给出最大值A,给出cf,cm。设等于A的数的个数为k,最小值为min,那么答案为k * cf + min * cm。求最大的答案,并输出最后的n个数。排序,从大的一端枚举将多少数变为A,二分最小值,然后在小的一端二分查找可以使多少数变为最小值,更新答案。懵逼,二分写搓了真容易被卡。/* Footprint原创 2016-03-10 22:22:35 · 950 阅读 · 0 评论 -
【SPOJ-AGGRCOW】【BZOJ1734】【POJ2456】Aggressive cows【二分】【贪心】
题意:n个房间,c头牛,将这c头牛分配进房间,使得牛之间的最小距离最大。经典二分。二分答案,枚举房间。如果房间距离大于答案,那么计数器加一。如果最后计数器不小于c,说明答案应该更大,否则更小。#include #include using namespace std;const int maxn = 100005;int n, m, pos[m原创 2016-02-25 14:42:40 · 644 阅读 · 0 评论 -
【TC-SRM461Div1】Fencing Garden【Meet In The Middle】【二分】
2013年国家队论文题。《搜索问题中的meet in the middle技巧》的最后一题。/* Footprints In The Blood Soaked Snow */#include #include #include using namespace std;typedef long long LL;const int maxn = 45, max原创 2016-03-06 21:39:33 · 616 阅读 · 0 评论 -
【Codeforces38G】Queue【Splay】【二分】
题意:有n个人,第i个人的任务重要度为a[i],良心值为c[i]。这n个人依次进行排队,当前i-1个人排好队后,第i个人来到队伍末尾,如果站在他前面的人的任务重要度比他的小,第i个人就会说服前面的人与其交换位置,第i人会反复这么做直到他前面的人的任务重要度不小于他,或者他感受到了良心的谴责(即最多交换c[i]次)。你的任务是计算出最后队伍的排列情况。分析可知,我们需要在后c原创 2016-02-20 22:02:04 · 864 阅读 · 0 评论 -
【POJ3294】Life Forms【后缀数组】【二分】
首先二分长度x,将不小于x的height分组。然后判断连续的一组内,每个后缀所属的每个字符串的个数是否超过一半即可。二分的时候可以顺便把答案记录下来。注意每次分组完毕后要给vis清零。#include #include #include using namespace std;const int maxn = 110005, maxd = 105, M原创 2016-02-13 20:23:48 · 439 阅读 · 0 评论 -
【POJ3261】Milk Patterns【后缀数组】【二分】
似乎是后缀数组的例题?二分答案ans,将不小于ans的height分组,判断是否有k组即可。听说数字并不是非常大,所以直接把字符集大小设小了。当然也可以离散化。#include #include using namespace std;const int maxn = 20005, maxm = 20005, M = 20000;int num[maxn]原创 2016-02-09 23:59:20 · 1208 阅读 · 0 评论 -
【BZOJ1189】[HNOI2007]紧急疏散evacuate【最大流】【二分】
【题目链接】先处理出每个人到每个门的最短距离。二分答案mid。从S到每个人连边,容量为1。每个门拆为mid个点,第i个点代表第i个时刻的门,每个人向 第(最短距离)个点 ~ 第mid个点 连边。每个门向T连边。跑最大流,看是否满流。一直担心建图错,结果没错,倒是忘了判impossible了。/* Pigonometry */#include原创 2016-04-21 16:22:59 · 1056 阅读 · 0 评论