二分与三分
DZYO
Never stop
展开
-
BJ模拟 Goodness(凸包+三分答案)
BJ模拟 Goodness(凸包+三分答案)原创 2017-03-23 14:35:27 · 724 阅读 · 0 评论 -
BZOJ4538: [Hnoi2016]网络(树上路径交+整体二分)
传送门题解: 对于一个询问我们二分他的答案kkk,那么只用判断所有大于kkk的路径的交集是否包含即可。可以考虑整体二分,直接把路径一起往线段树上放,询问直接在线段树上二分就行了。维护树上路径交可以做到 O(1)O(1)O(1) ,具体可以看这里。 也可以直接用树状数组做路径加然后查询标记数, 不过时间复杂度会多一个lognlogn\log n。用STSTST表维护LCALC...原创 2018-02-28 16:09:39 · 609 阅读 · 0 评论 -
Codeforces Round #336 (Div. 1)E:Cross Sum(二分+扫描线)
传送门题解: 二分答案,然后检查当前范围(圆)中直线的交点是否超过mmm。在圆中检查两条直线相交非常方便,只需要把直线与圆的交点做出来,相交直线一定形如ABABABABABAB的形式。 那么排一边序直接做扫描线,用树状数组维护区间和。最后查询的时候要查询l−epsl−epsl-eps,因为lll的点可能很多。 #include <bits/stdc++.h>t...原创 2018-02-25 12:47:34 · 367 阅读 · 0 评论 -
NOI模拟:深邃(二分+贪心)
题意: 给一棵树,有nnn个点,其中kkk个关键点, 求一种分割方案(断掉一些边)使得每个联通块至少有111个关键点,且使得最大块最小。题解:二分块的限制 , 然后记fi,gifi,gif_i,g_i表示与iii联通的最小块大小, 以及这个最小块是否含黑点,贪心做树形DP即可。#include <bits/stdc++.h>using namespace std;...原创 2018-03-22 19:38:23 · 314 阅读 · 0 评论 -
BZOJ5252/LOJ#2478. 「九省联考 2018」林克卡特树(凸优化)
传送门题解: 问题其实是找k+1k+1k+1条点不相交的链(可以为单个点),使得其边权和最大。显然可以费用流, 且费用流有凸性。 即是: 记iii条链的答案为AnsiAnsiAns_i,则Ansi−Ansi−1≥Ansi+1−AnsiAnsi−Ansi−1≥Ansi+1−AnsiAns_i-Ans_{i-1} \ge Ans_{i+1}-Ans_i。我们二分导数,使得取最优值时个数...原创 2018-04-13 21:10:53 · 846 阅读 · 0 评论 -
Atcoder AGC007E : Shik and Travel(DP)
传送门题解: 先二分然后在树上DP。注意到一个子树一定是只进出一次,进去的长度是一个点的深度,出来的长度是另一个点的深度。我们可以对一个点维护一个子树所有这样的状态的单调队列,合并后显然大小为较小子树的大小*2。 时间复杂度O(nlog2n)O(nlog2n)O(n\log^2 n)。#include &lt;bits/stdc++.h&gt;using namespace ...原创 2018-05-16 14:08:14 · 620 阅读 · 0 评论 -
Atcoder AGC006D : Median Pyramid Hard
传送门题解: 二分最终答案,然后转化为0,1串。 发现连续的0,1串每次往左右扩展1,那么我们找到距离中点最近的即可。#include <bits/stdc++.h>using namespace std;const int RLEN=1<<18|1;inline char nc() { static char ibuf[RLEN],*ib,*o...原创 2018-06-13 18:59:40 · 353 阅读 · 0 评论