二分 & 三分
LowestJN
强省弱OIer
展开
-
[BZOJ3358][Usaco2004 Jan]洪水
题意给定一张N∗MN*M的地图,每个格子有一个海拔高度。有一个降雨量VV,求降水后水面的高度和被水覆盖的陆地的体积。二分降水后的水面高度。顺便处理被水覆盖的体积。O(NMlog V)O(NM\log~V)#include <cstdio>#define N 410int A[N][N],n,m,v;long long Ans;inline bool check(int x){ long原创 2016-12-15 20:53:27 · 732 阅读 · 0 评论 -
[线段树 & 前缀 优化建图 二分 2-SAT] CF Gym100159 facebook-hacker-cup-2012 I. Unfriending
二分答案对于一个点,肯定有一个区间里的点和它不能共存这个可以用线段树优化建图,每个friend list最多只能删一个,用前缀优化建图还要一些针对随机数据什么的trick才能过…比如二分中的那个特判#include <cstdio>#include <iostream>#include <algorithm>#include <vector>#include <cstring>using n原创 2017-10-21 23:20:57 · 646 阅读 · 0 评论 -
[wqs二分 DP] POJ1160. Post Office
一样的套路有一个office数量为 pp 的限制很烦,当设一个office时,我们增加一个价值 xx ,然后直接无视office数量的限制DP,显然 xx 越大,最优解的office数量越小,二分一下就好了瞎DP是O(n2logn)O(n^2\log n) 的,DP也可以用决策单调优化#include <cstdio>#include <iostream>#include <algorithm>原创 2017-11-07 21:31:34 · 1224 阅读 · 0 评论 -
[二分答案 DP检验 几何] BalkanOI 2017. Cruise
题意是给定平面内2000给点(都在y轴右边),要选出一些点,和原点组成多边形,求在多边形内的点的点权和除以多边形周长的最大值。分数规划,二分答案∑wi∑disi,j≥mid{\sum w_i\over \sum dis_{i,j}}\ge mid∑w−mid∑disi,j≥0\sum w-mid\sum dis_{i,j}\ge 0这样求∑w−mid∑disi,j\sum w-mid\sum dis原创 2017-10-31 11:40:05 · 592 阅读 · 1 评论 -
[BZOJ4920][Lydsy六月份月赛 .D][数学][三分]薄饼切割
可以把线段分成无数个点,这些点经过的面积就是答案,显然这些点的轨迹是无数个同心圆,只要把最大的圆包围的面积减去最小的圆包围的面积就是答案了我是用三分求最小的圆的,这样比较方便,最大的圆肯定是线段的两个端点之一,比较一下就好了。 其他的画画图推推式子就好啦#include <cstdio>#include <iostream>#include <algorithm>#include <cmat原创 2017-06-25 17:00:52 · 704 阅读 · 0 评论 -
[二分 ST表 杂题] Codeforces875D. High Cry
早知道先看D题就不会掉这么惨了枚举左端点,那么区间或值最多变化log次二分变化的区间,再二分区间或值大于区间最大值的区间用ST表记一下区间最大值、或值#include <cstdio> #include <algorithm>#include <iostream>using namespace std;typedef long long ll;const int N=200010;int n,a原创 2017-10-17 13:11:33 · 646 阅读 · 0 评论 -
[二分 单调队列] Atcoder AGC003 E. Sequential operations on Sequence
首先可以发现,如果 xi>xi+1x_i>x_{i+1} 那么 xix_{i} 就是没用的,所以我们就倒过来求一个递减的序列然后考虑第 ii 次操作后的数列,肯定是由第 i−1i-1 次操作后的数列循环几次再加一个前缀得到的而那个前缀也是由之前的某个前缀得到的,那么就二分一下,记一下每次操作会执行几次(也就是被后面的操作覆盖几次)瞎搞一下因为每次操作最多二分log次,所以总复杂度是 O(nlog2n原创 2017-12-07 18:00:16 · 454 阅读 · 0 评论 -
[LP对偶 & 最大费用可行流] TopCoder SRM 676 div1 Farmville
二分答案 XX 设植物开始生长的时间是 xix_i ,结束生长的时间为 yiy_i那么要满足以下限制yi≥xiy_i\ge x_iyi≥xi+ti−diy_i\ge x_i+t_i-d_ixi≥yjx_i\ge y_j(jj 要在 ii 之前生长)xt≥yix_t\ge y_ixi≥ysx_i\ge y_s用这个东西对欧成最大费用可行流,处理一下正权环就好了#line 5 "Farmv原创 2017-12-15 19:31:52 · 558 阅读 · 0 评论 -
[二分 & 上下界网络流] BZOJ2406. 矩阵
二分答案每一行每一列看做一个点,S向这个点连边且流量在[ΣAi,j-x,ΣAi,j+x]之间,然后行与列之间连流量在[L,R]之间的边跑上下界网络流盼是否存在可行流就行了#include <cstdio>#include <iostream>#include <algorithm>#include <queue>#include <cstring>using namespace std;co原创 2017-12-17 19:40:26 · 370 阅读 · 0 评论 -
[差分约束] Topcoder SRM553 Div1 Hard. YamanoteLine
可行的长度肯定是一个区间约束条件可以建城差分约束系统,那么判无解就是判是否有负环记一下负环上关于总长度的系数,二分就可以了#include <cstdio>#include <iostream>#include <algorithm>#include <vector>using namespace std;const i...原创 2018-03-07 13:23:13 · 545 阅读 · 0 评论 -
[wqs二分 DP] Codeforcces 739E. Gosha is hunting
看CF上的博客吧#include <cstdio>#include <iostream>#include <algorithm>#define fi first#define se secondusing namespace std;const int N=100010;int n,x,y;double a[N],b[N];inline pair<int,int> solve(double原创 2017-11-07 15:21:20 · 445 阅读 · 0 评论 -
[二分 前缀优化建图 2-SAT] Codeforces 587D. Duff in Mafia
二分答案对于一个点,最多能删一条相连的边,每一种颜色最多能有一条相连的边,那么把每个点相连的边用前缀优化建图就可以了#include <cstdio>#include <iostream>#include <algorithm>#include <vector>#include <cstring>using namespace std;const int N=1000010;int n,m,原创 2017-10-21 14:24:44 · 544 阅读 · 0 评论 -
[BZOJ1901]Dynamic Rankings 动态排名
题意给定一个NN个数的数列,以及MM次操作,操作有两种,询问区间[l,r][l,r]中第kk小的数,或改变其中一个数的值。本题显然可以用树状数组套主席树做,至于这种做法g大神的博客有详细的介绍。树状数组套主席树做法——gjghfd也可以整体二分做,显然这种做法比较快哈哈哈。O(nlog2n)O(nlog^2n)#include <cstdio>#define N 10010struct stp{原创 2016-12-23 20:12:37 · 727 阅读 · 0 评论 -
[BZOJ4552][Tjoi2016&Heoi2016][线段树][二分]排序
题意求给定序列经过给定排序网络后的第k个元素鏼爷15年论文小例题%%%二分答案x,原数列中大于等于x的设为1,小于x的设为0。 每一次排序的区间[l,r]中,有k1个0,k2个1,那么升序就把前k1个覆盖为0,后k2个覆盖为1,降序相反。 可以用线段树维护。#include <cstdio>#include <iostream>#include <algorithm>#define N 1原创 2017-02-13 20:01:21 · 546 阅读 · 0 评论 -
[BZOJ2806][Ctsc2012][后缀自动机][队列优化][DP]Cheat
题意略……因为要让L的长度最大,可以二分L,然后check 要求在L的限制下最大的匹配长度,可以DP。 令f[i]表示前i个字符的最大匹配长度,g[i]表示1~i可以匹配的最长后缀的长度,则f[i]=max{f[j]+i-j | i-g[i]<=j<=1-L} i-g[i]是单调不降的,所以这个DP可以用单调队列优化#include <cstdio>#include <iostream>#原创 2017-02-15 18:35:31 · 412 阅读 · 0 评论 -
[点分树][二分] [BZOJ4317]Atm的树 && [BZOJ2117][2010国家集训队]Crash的旅游计划 &&[BZOJ2051]A Problem For Fun
题意求一棵树上,以每个点为起点的第k短路径双倍经验对于每一个点,二分答案,那么只要判断与当前点距离小于等于二分出来的答案的点的个数是否等于k就行了复杂度nlog^3n,数据点应该不多……表示树上倍增常数太大了……#include <cstdio>#include <iostream>#include <algorithm>#include <vector>#include <queue>#原创 2017-03-14 17:40:52 · 917 阅读 · 0 评论 -
[树的同构][二分][可并堆维护哈希] LOJ#6066 || BZOJ4928 && 2017 山东一轮集训 Day3. 第二题
这题一看就可以二分 那么解决这题的关键就变成了怎么对树进行哈希,以及怎么快速维护哈希值 想了一个下午想了一个比较靠谱的哈希方法。 用一个p进制数(p>n且为质数)来表示每一个节点,这个数有depth位,depth位这个节点的深度,那么这个数在p进制下第i位表示这个点的depth-i的祖先是其父亲的第几个儿子。 大概长这样 子树中所有节点的哈希值之和作为这个子树的哈希值。 因为每个哈希值的原创 2017-07-11 18:07:31 · 937 阅读 · 0 评论 -
[BZOJ4921][Lydsy六月份月赛 .E][二分][瞎搞]互质序列
枚举保留的那些数,可以先枚举前缀的gcd,然后因为一个数与log个和它不同的数取gcd后就会变成1,所以可以二分,这样是nlog2nn\log^2 n的,为什么网上有人说两个log能过…… 不过因为不同前缀gcd个数也只用log个,所以判一下当前枚举到的前缀gcd与上一位相同的话特殊处理就可以了……T了两发就放弃了……不应该啊#include <cstdio>#include <iostream原创 2017-06-25 16:46:02 · 579 阅读 · 0 评论 -
[二分][杂题] Codeforces Round #424 .A Office Keys
第一次打vp… 第一题就做了挺久的,听gjghfd大佬说要打匈牙利,有点慌可以二分时间t,然后每个人找最左边的在t时间内能捡到且到达终点的钥匙,看是否有方案#include <cstdio>#include <iostream>#include <algorithm>#include <vector>#include <map>#include <set>#include <cmath原创 2017-07-16 17:06:56 · 341 阅读 · 0 评论 -
[Codeforces 808F] [二分] [最小割] Card Game
题意大概就是选一些物品,这个物品魔力值的两两之和为合数,物品等级要小于你的等级,求你最小的等级,可以选出这样的一些物品使这些物品能力值之和>=k。首先可以二分答案,然后就变成最小割的经典模型魔力值为奇数的向源点连边,偶数向汇点连边,魔力值之和为合数的两个物品之间连边#include <cstdio>#include <iostream>#include <algorithm>#include原创 2017-05-17 08:17:57 · 834 阅读 · 0 评论 -
[二分 树形DP] CEOI2017. Mousetrap
第一次做这种DP题以 tt 为根,那么老鼠的决策肯定是先往上走一段(或不走),再往子树中走。如果老鼠往子树中走,我们肯定是等它走到某个位置不能走了,然后把他当前在的位置当根节点这段路上的其他支路都封死,这样是最优的。那么我们可以树形DP出老鼠走到以这个点为根的子树的时候,需要的最少步数。令 wiw_i 表示走到这个节点为根的子树时候的最小步数( wiw_i 要算上从这个点到根路径上的支路的数量)那么原创 2017-10-06 18:10:31 · 766 阅读 · 0 评论 -
[二分 bfs] UOJ#371. 【UR #17】滑稽树下你和我
二分答案 用点对 (x,y)(x,y)(x,y) 表示一个人在 xxx,另一个在 yyy 的状态,当 xxx 和 yyy 的距离小于等于二分的答案时,这个状态合法。 两个状态 (x1,y1)(x1,y1)(x1,y1) 和 (x2,y2)(x2,y2)(x2,y2) 直接相连,当且仅当 x1x1x1 和 x2x2x2 之间有边或者 y1y1y1 和 y2y2y2 有边 那么只要用bfs判断一...原创 2018-03-19 12:27:18 · 605 阅读 · 1 评论