
二分
Lynstery
一只蒟蒻
展开
-
[二分 + 2-SAT] HDU3622: Bomb Game
题意给定平面上n对点,每对点必须且只能先一个。以选出的n个点做圆,这些圆不能有公共部分。求n个圆的半径的最小值的最大值。题解我的第一道2-SAT。 容易想到二分答案,每对点的选择可以看做是一个布尔变量,真表示取第一个,假表示取第二个。根据当前二分的半径可以判断出某两个点能否同时取到。这就得到了一堆限制。然后2-SAT进行验证即可。#include<cstdio>#include<cmath>#原创 2017-04-08 19:35:16 · 406 阅读 · 0 评论 -
[splay+二分+哈希] BZOJ1014: [JSOI2008]火星人prefix
题意给出初始的字符串。需要进行M次操作描,操作有3种: 1.询问LCQ(x,y)。2.修改单个字符。3.插入单个字符。 其中LCQ(x,y)表示字符串x~len与y~len的最长公共前缀的长度。(len为当前串长) M<=10^5题解对于静态的LCQ问题,我们可以对所有后缀排个序搞一搞实现,但是有了修改操作后就不行了,要另想办法。发现字符串的变化很自由,非常难控制,所以只好上大数据结构了,我们原创 2017-02-21 15:23:23 · 550 阅读 · 0 评论 -
[上下界网络流] BZOJ2406: 矩阵
题意题解求最小值的最大值,容易想到二分答案。 对于当前二分的mid,现在就要考虑怎么验证,实际上就是要满足形如:∣Asum[i]−Bsum[j]∣≤mid\lvert A_{sum}[i]-B_{sum}[j]\rvert \le mid 的所有不等式都成立。 变形一下可以得到:Asum[i]−mid≤Bsum≤Asum[i]+midA_{sum}[i]-mid\le B_{sum} \le A原创 2017-06-30 11:35:21 · 524 阅读 · 1 评论 -
[二分+最大流] BZOJ1532: [POI2005]Kos-Dicing
数据范围略有毒…一开始还以为是什么贪心… 其实就直接二分,然后最大流暴力验证一下就好了。#include<cstdio>#include<queue>#include<cstring>#include<algorithm>using namespace std;const int maxn=30005,maxe=100005;struct Edge{ int from,to,c原创 2017-09-29 14:23:43 · 396 阅读 · 0 评论 -
[二分+曼哈顿距离] 51Nod1671 货物运输
就是先二分答案,然后考虑如何验证。 满足 bi−ai≤midb_i-a_i \le mid 的点就不用管了,设传送点建在X,YX,Y, 则剩下的点需要满足: |X−ai|+|Y−bi|≤mid|X-a_i|+|Y-b_i|\le mid 这是如果我们发现考虑枚举一个端点什么的,很难搞。可以转化一下,注意上面的约束是一个曼哈顿距离的形式,也就是说把 (X,Y)(X,Y),(ai,aj)(a_i,原创 2017-10-23 07:55:22 · 398 阅读 · 0 评论 -
WQS二分——学习笔记
http://www.doc88.com/p-949564862405.html http://codeforces.com/blog/entry/49691 我的理解 (不一定很对): 大概就是某个东西越多总贡献越大,要求刚好取n个时的最优解。可以把 DPDP 状态里记的取的个数这一维去掉,而设一个 costcost,取 kk 个物品,总贡献要多减去cost*k,然后 DPDP 。costc原创 2017-12-17 20:24:44 · 3610 阅读 · 0 评论 -
[WQS二分] BZOJ2654:tree
以前做这题的时候以为只是个神奇的二分,没有完全懂原理,现在发现实际上就是 WQSWQS 二分。 考虑 g(x)g(x) 表示选共 xx 条白边的最优解,可以感觉到这个 g(x)g(x) 应是上凸的,满足斜率不降。所以就 WQSWQS 二分就好了。#include<cstdio>#include<algorithm>using namespace std;const int maxn=1000原创 2017-12-19 18:25:29 · 616 阅读 · 0 评论 -
[WQS二分套WQS二分] Codeforces #739E. Gosha is hunting
O(n3)O(n^3) DPDP 很显然。要优化就只能 WQSWQS 二分了。每种食物肯定是都用完的,所以相当于强制选若干个 AA 物品,若干个 BB 物品。发现物品选越多,收益是会增加的越来越慢的,所以这两维都可以 WQSWQS 二分。就能做到 O(nlog2n)O(nlog^2 n) ,很优美。 http://codeforces.com/blog/entry/49691 #include<c原创 2017-12-19 19:12:39 · 893 阅读 · 0 评论