![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二分答案
zxyoi_dreamer
退役了退役了爬了爬了,搞个锤子算法竞赛,不如好好享受大学生活。
展开
-
【洛谷P2839】middle(二分答案)(主席树)
传送门题解:复习一下常见的trick。求中位数转化为二分答案,大于等于的部分设置成 111 小的部分设置成 −1-1−1然后求和,看结果是否大于等于 000 来判断是否可行。这道题直接按照权值排序,以原序列标号为下标建立主席树,叶节点权值为在当前树中它应该为的权值,对于询问,中间的询问和,两边的询问最大前后缀即可。代码:#include<bits/stdc++.h>#...原创 2020-04-23 20:39:40 · 353 阅读 · 0 评论 -
【校内模拟】深邃(贪心)(二分答案)
简要题意:一棵树,有 kkk 个关键点,请你把树划分为若干联通块,使得每个联通块包含至少一个关键点,最小化最大的联通块的大小。题解:首先容易注意到可以二分答案。然后考虑怎么判断,进行dfs,每个点尽量贪心往下划分。hvuhv_uhvu 表示 uuu 为根的子树,uuu 这个联通块还能多容呐的点数。ntunt_untu 表示 uuu 为根的子树,无法向下分到任何一个联通块的点数。...原创 2020-04-09 17:09:17 · 139 阅读 · 0 评论 -
【CometOJ4303】小 C 的可重集(线段树)(随机二分)
传送门题解:这种不可枚举的数量里面求第 KKK 大显然是二分。问题在于这道题似乎并不好直接二分,没法对 O(n2)O(n^2)O(n2) 个串确定顺序。首先注意到这里的大小关系给的非常的迷,这就导致有一点很妙,对于一个集合,新加一个数,得到的集合一定比原集合小。于是确定左端点的时候,集合大小关于右端点单调。现在还有一个无法二分的问题,这个完全不用在意,在可能集合中随机一个集合即可,容...原创 2020-03-14 16:56:36 · 231 阅读 · 0 评论 -
【HNOI2012】射箭(半平面交)(二分答案)
传送门题解:BZOJ能过,数据不算水。然而DarkBZOJ和洛谷不知道为什么卡精度,可能是因为加强了数据???注意到抛物线可以表示为y=ax2+bxy=ax^2+bxy=ax2+bx,列出不等式之后发现就是一个对于a,ba,ba,b的线性限制,直接上半平面交就行了,排序可以在最开始排一次,后面直接做就行了。代码:#include<bits/stdc++.h>#defi...原创 2019-12-24 11:39:49 · 121 阅读 · 0 评论 -
【LOJ6078】「2017 山东一轮集训 Day7」重排(二分)(概率DP)
传送门题解:首先考虑没有自环的情况。先考虑没有边权重排的情况,这个时候显然是贪心选择最小后继。然后考虑边权存在重排怎么做。设度数为ddd,显然要考虑的是d2d^2d2个后继组合(边×\times×点)被选择的情况。直接排个序,用堆维护匹配的同时算一下条件概率转移即可,精度爆炸的时候要自行退出。如果有自环,直接二分或者迭代即可。复杂度就没有哪个地方是满的。代码:#include...原创 2019-10-29 14:30:16 · 444 阅读 · 0 评论 -
【FJWC2019】最短路(最小割)(二分答案)
给你一张 n 个点 m 条边的无向图,走过每条边都需要花费 1 秒。给你一个整数 k ,请你选择至多 k 个点,令经过这些点也需要花费 1 秒,使得从点 0 走到点 n−1 的最短时间最大。输出这个最大值。注意,不能选择点 0 或点 n−1 。对于全部数据,2≤n≤100,1≤m≤n×(n−1)/2,0≤k≤n2≤n≤100,1≤m≤n×(n−1)/2,0≤k≤n2≤n≤100,1≤m≤n...原创 2019-08-02 21:10:38 · 412 阅读 · 0 评论 -
【TC SRM 676】Farmville(线性规划)(对偶原理)(二分答案)(无源汇最大费用可行流)
传送门题解:在推线性规划之前,先来看一个东西,无源汇最大费用可行流,也可称为最大费用循环流。这玩意怎么求解,考虑我们实际上是用了若干环来覆盖原图。如果一个点在环上那么其入流等于出流。我们先贪心把所有正权边选上,将其转化为一条负权边,记录一下每个点当前的流量差是多少。然后我们用负权边来把所有点的流量补齐,这样就是最小费用最大流了,实际上一定满流,也就是说最大流流量是确定了的,自己手推一下就...原创 2019-09-15 08:30:17 · 280 阅读 · 0 评论 -
【BZOJ4310】跳蚤(后缀数组)(二分答案)
传送门题解:二分答案为第KKK小的子串(要求本质不同,这个可以后缀数组预处理后快速查询),转化为要求切割后不能存在字典序大于第KKK小的子串。从后往前贪心切割即可。代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs constusing std::cerr;us...原创 2019-09-24 11:20:32 · 180 阅读 · 0 评论 -
【CF1034D】Intervals of Intervals(二分答案)(双指针)
传送门题解:首先二分权值第KKK大的区间的权值,怎么统计有多少个区间权值大于等于midmidmid?暴力枚举右端点,合法的左端点是一个前缀,且最大的合法左端点单调递增,我们考虑删去前缀区间来令当前的区间权值小于midmidmid,我们需要处理在右端点为rrr的时候左端点从lll平移到l+1l+1l+1会减少的贡献,直接用ODT的维护方式预处理一波维护一下线段就行了。现在问题还剩下怎么求前...原创 2019-09-28 11:13:21 · 378 阅读 · 0 评论 -
【CF768G】The Winds of Winter(启发式合并)(二分答案)
传送门题解:其实发现我们一定会在最大子树中选择一个子树接到最小的子树上。假设我们二分这个答案为xxx,所有子树中最大值为mxmxmx,次大值为submxsubmxsubmx,最小值为mnmnmn,则答案显然不可能小于submxsubmxsubmx,且我们选出来的子树大小 deltadeltadelta 必须满足mx−delta≤xmx-delta\leq xmx−delta≤x且mn+de...原创 2019-10-05 18:50:12 · 196 阅读 · 0 评论 -
2019.03.27【THUSCH2017】【LOJ2977】巧克力(斯坦纳树)(随机化)(二分答案)
传送门解析:读完题发现这是一个很裸的斯坦纳树,但是中位数并不是很好处理。先不管那个中位数,考虑怎么拿70pts70pts70pts。对于颜色的限制,我们直接将所有颜色随机映射到[0,k−1][0,k-1][0,k−1]中的一个整数上,然后以每个点权值为111做最小斯坦纳树。发现正确的概率只有k!kk\frac{k!}{k^k}kkk!,所以我们需要随机个几百次,并且发现错误情况计算出...原创 2019-03-27 21:51:21 · 399 阅读 · 0 评论 -
2018.03.08【JSOI2018】【洛谷P4518】【BZOJ5316】绝地反击(二分图匹配)(退流)(扫描线)
洛谷传送门BZOJ传送门解析:我们首先二分答案。然后判断如果一条飞船在时限内甚至飞不到圆周上就肯定gg了。如果能的话,我们将圆周分为nnn等份,第一份是从xxx轴开始的1/n1/n1/n圆,我们看这条飞船能不能飞到整个圆,如果能,就和每个区间连一条边。如果不能我们将它和整个圆匹配,就先记录哪些区间的端点是能够匹配的,然后记录下匹配的最左端点和未匹配的最左端点。跑二分图最大匹配,如果...原创 2019-03-09 10:52:21 · 189 阅读 · 0 评论 -
2019.02.26【九省联考2018】【BZOJ5251】【洛谷P4382】劈配(变形匈牙利)(二分答案)
BZOJ传送门洛谷传送门解析:对于第一问,将匈牙利变形,改为每次在一定等级的志愿里面找未匹配的导师,对于改变导师的排名靠前的选手,也是在同一等级里面找匹配。对于第二问,显然可以二分答案。但是每次都跑一遍前kkk的匈牙利结果太浪费时间了不是吗。那就开一个结构体,记录一下前缀的匈牙利结果,每次二分check的时候,直接开一个tmp的图,读取前缀匈牙利结果,然后跑就是了。跑得还挺快的,基...原创 2019-02-26 18:51:32 · 243 阅读 · 0 评论 -
2018.09.01 【国家集训队】跳跳棋 (LCA)(二分答案)
传送门解析:等吧。。。代码:#include&amp;amp;lt;bits/stdc++.h&amp;amp;gt;using namespace std;#define re register#define gc getchar#define pc putchar#define cs const#define st staticinlineint getint(){ re...原创 2018-09-01 09:37:49 · 366 阅读 · 0 评论 -
2018.09.07【POJ2018】Best Cow Fences (二分答案)(线性DP)
传送门解析:待更新代码:#include&lt;cstdio&gt;#include&lt;cctype&gt;#include&lt;algorithm&gt;#include&lt;cmath&gt;using namespace std;#define ll long long#define re reg原创 2018-09-07 19:50:50 · 339 阅读 · 0 评论 -
2018.09.25【BZOJ2654】Tree (最小生成树)(二分法)
传送门解析:乍一看完全没思路的一道题。搜索?显然不行。。。然而,看出正解的我无f**k说。。。思路:考虑怎么调整白边的个数。在做最小生成树的时候。我们可以通过给白边全部加上或减去一个权值来搞定。加上一个数,可以使白边在生成树里面的条数减少。加少一点,就会使白边在生成树里面的条数增加。这个是很显然的。并且是对白色边的条数影响是具有单调性的。但是问题就来了,怎么知道我们这样做是...原创 2018-09-25 18:55:36 · 161 阅读 · 0 评论 -
2018.10.09【BZOJ2095】【POI2010】MOS-Bridges(欧拉回路)(二分答案)(最大流)
DarkBZOJ传送门解析:这绝对是我做过的最扯的欧拉回路的题了,明明标签是欧拉回路,可是怎么是一道网络流加二分答案啊?思路:首先,看到要求最大值最小,多半是个二分,然而。。。二分之后验证什么?好吧,看题目应该知道是要求欧拉回路。那直接爆搜求欧拉回路?用 (和谐) 想都知道是不可能的,怎么都能卡掉。那怎么验证?先想一想如何验证一般图是否存在欧拉回路:1.无向图:一笔画问题相...原创 2018-10-09 21:08:06 · 199 阅读 · 5 评论 -
2018.10.23【SCOI2015】【洛谷P4251】【BZOJ4443】小凸玩矩阵(二分答案)(二分图匹配)
洛谷传送门解析:并不知道这道题为什么在洛谷上是紫题,感觉好水啊。思路:把行和列分别当做两部分图,中间连边,可以发现这是一个二分图匹配。既然要求kkk大值最小,显然想到二分。那就是第n−k+1n-k+1n−k+1小值最小。每次二分出一个答案,将所有比它小的边全部激活,然后匈牙利找最大匹配,看最后的最大匹配数,如果≤n−k+1\leq n-k+1≤n−k+1,则答案过小,下界上移,否则上...原创 2018-10-23 19:15:35 · 288 阅读 · 0 评论 -
2018.10.24【校内模拟】小 C 的数组(二分答案)(DP)
传送门解析:一看就是二分,然而这个DPDPDP我只会O(n3)O(n^3)O(n3)的区间DpDpDp做法。。。一看觉得可做,考场上就去推式子去了,结果推挂了。。。一看题解,均分的思想。。。我去我第一个想的就是这个正解,结果被我莫名其妙的否了啊啊啊啊?!!!!思路:其实考虑如果只允许改变一个怎么选择,直接选择差最大的一组中的一个,调整成均分就行了。比如我们现在有一组数据1,5,13...原创 2018-10-24 21:05:15 · 123 阅读 · 0 评论 -
2018.11.05【NOIP2015】【洛谷2680】【UOJ#150】运输计划(二分答案+DFS序+树上差分)或(复杂度并不对(也不能过)的树链剖分)
洛谷传送门UOJ传送门解析:UOJ上的数据很强,复杂度不对过不了的,但是LCALCALCA如果是用倍增求的话也过不了(已经加了上界优化)。。。毕竟树剖常数小,复杂度还不满。。。思路:首先,不要试图化边为点,每条边的信息可以存在它所指向的儿子中。解法1:UOJ上不能过的树链剖分其实我们只需要考虑断掉哪些边就行了,显然断掉最长路径上以外的边是没有作用的,所以我们只需要考虑枚举断掉最长路...原创 2018-11-05 21:45:47 · 196 阅读 · 0 评论 -
2018.12.01【SPOJ220】Relevant Phrases of Annihilation(后缀数组)(二分答案)
传送门解析:套路题。首先串成一串求一下SA。然后按照二分出的lenlenlen,根据heightheightheight数组分组。在每组里面看kkk个串是否分别满足条件就行了。代码:#include<bits/stdc++.h>using namespace std;#define ll long long#define re register#define ...原创 2018-12-01 14:06:36 · 160 阅读 · 0 评论 -
2019.02.28【HAOI2018】【BZOJ5302】【洛谷P4493】字串覆盖(后缀自动机SAM)(线段树合并)(倍增法)
BZOJ传送门洛谷传送门解析:乍一看十分毒瘤,仿佛不可做。仔细分析,其实是有点门道的。其实贪心可以发现,就是让PPP的子串尽可能在TTT上匹配,且尽可能向前匹配,而且匹配还不能相交。。。。匹配匹配多次匹配显然就是需要维护right集合的,好的上线段树合并。我们先建立对AAA建立后缀自动机,然后将BBB放上去跑匹配。显然这时候每一个点匹配的位置都是前缀匹配的位置,换句话说,现在每个...原创 2019-03-01 07:57:05 · 208 阅读 · 0 评论