
【算法】Hall定理
文章平均质量分 88
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【BZOJ3693】圆桌会议
【题目链接】点击打开链接【思路要点】倍长序列,将环上问题化为序列问题。根据Hall定理,如果我们能找到一系列区间使得它们的权值之和大于这些区间并的长度,那么答案为No,否则答案为Yes。显然,找到多于一段的区间是没有意义的,因此,我们认为找到的这一系列区间的并也是一个连续的区间。我们希望找到的区间完全包含的区间的权值之和与其长度的差尽可能大。离散化坐标,枚举最终区间的左端点,对右端点对上述差值的贡...原创 2018-02-17 15:36:17 · 489 阅读 · 0 评论 -
【BZOJ2138】stone
【题目链接】点击打开链接【思路要点】将问题转化一下,每次询问时新建\(K_{i}\)个点向一个区间连边,要求删去最少的点使得剩下的二分图存在完美匹配,并保留没有被删去的点到下一个询问。根据Hall定理,如果我们能找到一系列点,使得它们的总数大于它们对应的区间并的长度(即石头总数),那么剩下的二分图将不存在完美匹配,反之则一定存在。显然,找到的区间的并如果多于一段是没有意义的,因此,我们认为找到的这...原创 2018-02-18 16:13:56 · 399 阅读 · 0 评论 -
【BZOJ1135】【POI2009】Lyz
【题目链接】点击打开链接【思路要点】问题是“是否存在完美匹配”,考虑Hall定理。根据Hall定理,如果我们能找到一系列人,使得它们的总数大于它们对应的区间并的长度(即鞋的总数),那么二分图不存在完美匹配,反之则一定存在。显然,这样的区间的并一定要也是一个连续的区间(否则没有意义)。本题中,如果一系列(人对应的)区间的并是一个连续的区间,那么它们编号同样是一个连续的区间。根据我们之前的推理,答案为...原创 2018-02-19 15:40:17 · 381 阅读 · 0 评论 -
【BZOJ5249】【2018多省省队联测】IIIDX
【题目链接】点击打开链接【思路要点】按照题意,依次先确定每个节点可以填的最大的数。在某个位置\(i\)填入一个数\(x\)时,需要保证可以预定\(Size_{i}-1\)个大于等于\(x\)的数到\(i\)的子树中。如何判断是否能够预定?这实际上就是判断一个二分图是否存在完美匹配,Hall定理即可。具体实现时需要用一棵支持区间加减,维护区间最小值线段树完成。时间复杂度\(O(NLogN)\)。【代...原创 2018-04-09 16:23:17 · 317 阅读 · 0 评论 -
【CodeForces】Educational Codeforces Round 47 题解
【比赛链接】 点击打开链接 【题解链接】 点击打开链接 **【A】**Game Shopping 【思路要点】 按照题意模拟。 时间复杂度 O(N)O(N) O(N) 。 【代码】 #include<bits/stdc++.h>using namespace std;const int...原创 2018-08-30 13:15:24 · 388 阅读 · 0 评论 -
【校内训练2019-05-22】预言
【思路要点】首先用 HallHallHall 定理 +++ 线段树判断是否有解。若有解,考虑从前到后构造字典序最小的解。由于在 pospospos 处填入一个数只会影响左端点为 pospospos 的区间,可以二分出填入数字可能的最靠右的右端点 ritritrit ,填入数字的右端点需要在区间 [pos,rit][pos,rit][pos,rit] 中。再用一棵线段树维护右端点在该区间...原创 2019-05-24 12:25:45 · 284 阅读 · 0 评论 -
【AtCoder】AtCoder Grand Contest 037 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【A】 Dividing a String【思路要点】设一个划分中第一次出现长度超过 222 的 SiS_iSi 的位置为 iii 。则可以通过将 SiS_iSi 划分为更小的串,以及将 SiS_iSi 的某一个后缀拼接至 Si+1S_{i+1}Si+1 的方式使得第一次出现长度超过 222 的 SiS_iS...原创 2019-08-19 11:14:41 · 855 阅读 · 0 评论 -
【CodeForces875F】Royal Questions
题目链接点击打开链接题目解法由于一个王子至多匹配一个公主,因此将王子按照价值排序,贪心地考虑能否加入答案是正确的。将王子的选择看做一条边,那么由 HallHallHall 定理,存在完美匹配的充要条件是每一个联通块是树或环套树。用并查集解决即可。时间复杂度 O(N+MLogM)O(N+MLogM)O(N+MLogM) 。【代码】#include<bits/stdc++.h&g...原创 2019-08-28 13:53:34 · 271 阅读 · 0 评论