对于一个二分的答案

假设存在一个点集使得不满足Hall定理

题中给定的信息说明 左边每个点对应的右边点是一个区间

如果当前点集对应的右边区间是若干个不相交的区间组成的话说明我们还可以找到一个更小的点集使得其也不满足Hall定理

假设我们当前找到了一个极小的不满足Hall定理的点集 其对应的右边区间如上所证一定是一段连续的区间

如果这个极小的点集不是一段连续的区间的话 我们可以加入一些点 使得左边的点集变成连续的一段区间而右边对应的点集不变

得证:在题中,如果有一个点集不满足Hall定理 则必定存在一个区间也不满足Hall定理

则对于任意的i,j(i<j) 要有R[j]-L[i]>=j-i

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n, L;
ll a[];
ll b[];
bool check(int x)
{
int maxn = -INT_MAX;
int l = , r = ;
for (int i = ; i <= * n; i++) {
while (l <= * n && b[l] < a[i] - x) {
l++;
}
while (r <= * n && b[r] <= a[i] + x) {
r++;
}
maxn = max(l - i, maxn);
if (r - i - < maxn) {
return false;
}
}
return true;
}
int main()
{
scanf("%d %d", &n, &L);
for (int i = ; i <= n; i++) {
scanf("%lld", &a[i]);
}
for (int i = ; i <= n; i++) {
scanf("%lld", &b[i]);
}
sort(a + , a + + n);
sort(b + , b + + n);
for (int i = ; i <= n; i++) {
a[i] += L, a[i + n] = a[i] + L;
}
for (int i = ; i <= * n; i++) {
b[i + n] = b[i] + L;
}
int l = -, r = L;
while (l < r - ) {
int mid = (l + r) >> ;
if (check(mid)) {
r = mid;
} else {
l = mid;
}
}
printf("%d\n", r);
}

CF981F 二分+Hall定理的更多相关文章

  1. 【CF981F】Round Marriage(二分答案,二分图匹配,Hall定理)

    [CF981F]Round Marriage(二分答案,二分图匹配,Hall定理) 题面 CF 洛谷 题解 很明显需要二分. 二分之后考虑如果判定是否存在完备匹配,考虑\(Hall\)定理. 那么如果 ...

  2. 【CF981F】Round Marriage(二分答案,hall定理)

    传送门 题意: 给出一个长度为\(L\)的环,标号从\(0\)到\(L-1\). 之后给出\(n\)个新郎,\(n\)个新娘离起点的距离. 现在新郎.新娘要一一配对,但显然每一对新人的产生都会走一定的 ...

  3. 二分图hall定理应用+二分+双指针——cf981F(好题)

    /* 二分答案,判mid是否合法 如何判断:如果是在直线上,那么遍历匹配即可 现在在环上,即既可以向前匹配也可以向后匹配,那么将环拆开,扩展成三倍 显然a和b的匹配边是不可能交叉的,因为交叉必定没有不 ...

  4. bzoj3693: 圆桌会议 二分图 hall定理

    目录 题目链接 题解 代码 题目链接 bzoj3693: 圆桌会议 题解 对与每个人构建二分,问题化为时候有一个匹配取了所有的人 Hall定理--对于任意的二分图G,G的两个部分为X={x1,x2,- ...

  5. loj#6062. 「2017 山东一轮集训 Day2」Pair hall定理+线段树

    题意:给出一个长度为 n的数列 a和一个长度为 m 的数列 b,求 a有多少个长度为 m的连续子数列能与 b匹配.两个数列可以匹配,当且仅当存在一种方案,使两个数列中的数可以两两配对,两个数可以配对当 ...

  6. ARC106E-Medals【hall定理,高维前缀和】

    正题 题目链接:https://atcoder.jp/contests/arc106/tasks/arc106_e 题目大意 \(n\)个员工,第\(i\)个在\([1,A_i]\)工作,\([A_i ...

  7. Codeforces 338E - Optimize!(Hall 定理+线段树)

    题面传送门 首先 \(b_i\) 的顺序肯定不会影响匹配,故我们可以直接将 \(b\) 数组从小到大排个序. 我们考虑分析一下什么样的长度为 \(m\) 的数组 \(a_1,a_2,\dots,a_m ...

  8. Hall定理 二分图完美匹配

    充分性证明就先咕了,因为楼主太弱了,有一部分没看懂 霍尔定理内容 二分图G中的两部分顶点组成的集合分别为X, Y(假设有\(\lvert X \rvert \leq \lvert Y \rvert\) ...

  9. TCO 2015 1A Hard.Revmatching(Hall定理)

    \(Description\) 给定一个\(n\)个点的二分图,每条边有边权.求一个边权最小的边集,使得删除该边集后不存在完备匹配. \(n\leq20\). \(Solution\) 设点集为\(S ...

随机推荐

  1. Windows配置jdk环境变量

    配置环境变量 前置条件:已经安装jdk以及jre 操 作:右击"我的电脑"-->"属性"-->"高级系统设置"-->&qu ...

  2. web题-自己做的

    @sqlmap工具注入 sql基础教程https://jingyan.baidu.com/article/eae078276530621fec5485b9.html 最后啥都有了查询flag表的fla ...

  3. 一个提高照片质量的网站和一个改变照片DPI的方法

    相信很多童鞋都有遇到过,碰到一张很喜欢的图片,想用来做背景什么的,蛋似--因为画质太AV了怕引起误会,所以不敢使用!很气--!! 这时大神就会跳出来说,画质不好?PS是用来吃si的么! 我:我才不会用 ...

  4. Java中对JSONArray中的对象进行排序

    String jsonArrStr = "[ { \"ID\": \"135\", \"Name\": \"Fargo ...

  5. 添加SSH keys到github帐号

    使用git clone命令从github上同步github上的代码库时,如果使用SSH链接(如我自己的esesgrid项目:git@github.com:hmilycc/esesgrid.git),而 ...

  6. [AcWing30]正则表达式匹配

    [AcWing30]正则表达式匹配 请实现一个函数用来匹配包括'.'和'*'的正则表达式. 模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(含0次). 例如,字符串&quo ...

  7. [Nowcoder212D]禁书目录_概率期望

    禁书目录 题目大意:清教需要定期给Index清除记忆,在此之前需要把当中的十万三千本禁书取出来......不幸的是,禁书一旦离开了Index就非常脆弱,具体来说,每一本禁书都有一个魔力值 ai ,其记 ...

  8. mysql oracle postgresql 体系架构对比

    2个角度sqlservermysqloracle 12cpostgresql如果从create database角度来看 那么一个实例是可以对应多个数据库的~如果从实例和磁盘上的数据库文件(数据文件. ...

  9. 查看Oracle索引是否被使用或者有效

    第一步: explain plan for select * from T_USER where OPEN_ID='12345'; 第二步: select * from table(dbms_xpla ...

  10. ELK-全过程搭建

    环境说明:软件包我都 给你们放/usr/local/src/elk目录下安装目录都放在/usr/local/下数据都放在/data0/elk/目录下日志都放在/data0/logs/elk目录下系统 ...