对于一个二分的答案

假设存在一个点集使得不满足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. Django 虚拟化环境创建

    A:linux下的方法: 1.用python3.6内置的venv创建名为 typeidea-env虚拟化环境: python3.6 -m venv typeidea-env 2.激活环境: cd ty ...

  2. shell脚本常见的结构化函数

    if-then if command then command fi if-then-else if command then command else command fi 嵌套if if comm ...

  3. XCTF攻防世界Web之WriteUp

    XCTF攻防世界Web之WriteUp 0x00 准备 [内容] 在xctf官网注册账号,即可食用. [目录] 目录 0x01 view-source2 0x02 get post3 0x03 rob ...

  4. 【并行计算-CUDA开发】CUDA存储器模型

    CUDA存储器模型 除了执行模型以外,CUDA也规定了存储器模型(如图2所示)和一系列用于主控CPU与GPU间通信的不同地址空间.图中红色的区域表示GPU片内的高速存储器,橙色区域表示DRAM中的的地 ...

  5. vsphere6.7-虚拟机与ESXI时间同步

    环境介绍 esxi 6.7+vsphere6.7 需求配置 设置虚拟机时间与esxi时间同步.esxi时间与NTP服务器同步 配置方式 在esxi上开启NTP服务器时间同步,如下图: 修改虚拟服务器的 ...

  6. awk 打印从某一列到最后一列的内容

    数据内容来源于  linux history的命令输出 awk命令 history|awk -F " " '{for (i=2;i<=NF;i++)printf(" ...

  7. python 下安装pymysql数据库

    两种方法来安装pymysql 方法一.利用命令来安装 安装:python37 -m pip install pymysql 升级:python37 -m pip install pymysql --u ...

  8. MYsql 客户端下载地址

    workbench: https://www.mysql.com/cn/products/workbench/

  9. windows环境下安装selenium+python

    selenium 是一个web的自动化测试工具,不少学习功能自动化的同学开始首选selenium ,相因为它相比QTP有诸多有点: *  免费,也不用再为破解QTP而大伤脑筋 *  小巧,对于不同的语 ...

  10. tensorflow零起点快速入门(5) --强化学习摘录截图

    tf.random_normal_initializer tf的GraphKeys用法 tf.reduce_mean tf.squared_difference 非tf中的zip,python的zip ...