LOJ 6062 [Hall定理]

[总集] LOJ 分块1 – 9 分块9题 出题人hzw的解析 (tips.以下代码中IO优化都已省去,想看可以点传送门) 数列分块入门 1 修改:区间加 查询:单点值查询 这是一道经典题目,线段树、树状数组等都可以搞,这里讲讲分块 分块就是将一定长度的一段数打包成块,统一处理的算法 每个块都有自己的信息,自己的标记,统一维护,统一查询 我们可以将每个区间修改或查询拆分成在若干个整块,和头尾两个不完整的块中修改、查询后信息... 阅读详情

Hall定理:

设M(S)为与S中的点相连的点集,一个二分图(U,V)(|U|≤|V|)存在完备匹配,当且仅当满足对于任意点集x∈U,都有|M(X)|≥|X|。

Description

给出一个长度为n的数列{ai}和一个长度为m的数列{bi},求{ai}有多少个长度为m的连续子数列能与{bi}匹配。两个数列可以匹配,当且仅当存在一种方案,使两个数列中的数可以两两配对,两个数可以配对当且仅当它们的和不小于h。

Solution

因为是两个独立的东西在匹配那么就是一个二分图。发现匹配与数列{bi}的顺序无关,如果将其排序后ai匹配到的就是数列{bi}的一个后缀,然后根据Hall定理用线段树维护|M(X)|−|X|即可。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;

inline char get(void) {
    static char buf[100000], *S = buf, *T = buf;
    if (S == T) {
        T = (S = buf) + fread(buf, 1, 100000, stdin);
        if (S == T) return EOF;
    }
    return *S++;
}
inline void read(int &x) {
    static char c; x = 0;
    for (c = get(); c < '0' || c > '9'; c = get());
    for (; c >= '0' && c <= '9'; c = get()) x = x * 10 + c - '0';
}

const int INF = 1 << 30;
const int N = 151515;

int n, m, h, s, ans;
int a[N], b[N];
int add[N << 2], mn[N << 2];

inline int Min(int a, int b) {
    return a < b ? a : b;
}
inline void PushDown(int o) {
    if (add[o]) {
        add[o << 1] += add[o]; add[o << 1 | 1] += add[o];
        mn[o << 1] += add[o]; mn[o << 1 | 1] += add[o];
        add[o] = 0;
    }
}
inline void Add(int o, int l, int r, int L, int R, int x) {
    if (l >= L && r <= R) {
        add[o] += x; mn[o] += x;
        return;
    }
    PushDown(o);
    int mid = (l + r) >> 1;
    if (L <= mid) Add(o << 1, l, mid, L, R, x);
    if (R > mid) Add(o << 1 | 1, mid + 1, r, L, R, x);
    mn[o] = Min(mn[o << 1], mn[o << 1 | 1]);
}
inline int Min(int o, int l, int r, int L, int R) {
    if (l >= L && r <= R) return mn[o];
    PushDown(o);
    int mid = (l + r) >> 1, res = INF;
    if (L <= mid) res = Min(Min(o << 1, l, mid, L, R), res);
    if (R > mid) res = Min(Min(o << 1 | 1, mid + 1, r, L, R), res);
    return res;
}

int main(void) {
    freopen("1.in", "r", stdin);
    read(n); read(m); read(h);
    for (int i = 1; i <= m; i++) read(b[i]);
    for (int i = 1; i <= n; i++) read(a[i]);
    sort(b + 1, b + m + 1);
    for (int i = 1; i <= m; i++)
        Add(1, 1, m, i, i, -i);
    for (int i = 1; i < m; i++) {
        s = lower_bound(b + 1, b + m + 1, h - a[i]) - b;
        if (s <= m) Add(1, 1, m, s, m, 1);
    }
    for (int i = m; i <= n; i++) {
        s = lower_bound(b + 1, b + m + 1, h - a[i]) - b;
        if (s <= m) Add(1, 1, m, s, m, 1);
        if (mn[1] >= 0) ans++;
        s = lower_bound(b + 1, b + m + 1, h - a[i - m + 1]) - b;
        if (s <= m) Add(1, 1, m, s, m, -1);
    }
    cout << ans << endl;
    return 0;
}

海康VisionMaster使用学习笔记7-Group模块 光标需放在[]中选择循环索引,循环索引用于实现依次检测10个匹配框的顶点,若不订阅,模块会循环检测同一个匹配框。可以看到绿色是它的边缘点.为方便查看顶点,将边缘点设置为不可见。循环使能打开,开始值设为0,循环结束值设为快速匹配的匹配个数。回到上一层,点击Group工具的设置图标,圆拟合的点设置为Group工具输出的点集。图像输入源选择Group的图像输入源。区域选择Group的快速匹配的匹配框。添加订阅到Group内部的顶点检测。对匹配框区域进行顶点检测。用于定位匹配框中的顶点。添加快速匹配的匹配框。 阅读详情

相关推荐

电力现货市场出清机制与节点电价计算实战解析

本文深入解析了电力现货市场的出清机制,特别是节点边际电价的计算原理与实战应用。通过一个基于Matlab和IEEE30节点系统的完整案例,详细演示了如何利用最优潮流模型求解市场出清价格,并提取节点电价,揭示了电网阻塞如何影响实时电价的形成。

weixin_29061425的博客 949

loj #6062. 「2017 山东一轮集训 Day2」Pair(线段树)

题目链接:https://loj.ac/problem/6062 留坑有空写 代码: #include using namespace std; const int MAXN=2e5+5; int a[MAXN],b[MAXN]; int n,m,h; struct seg { #define lson l,mid,rt<<1 #define rson mid+1,r,r

bibibibi的博客 777

对比实验系列:Efficientdet环境配置及训练个人数据集

可以通过下方链接下载Efficientdet源码。

Yayisheng的博客 4585

loj 6062 (hall定理+ 线段树)

题目链接loj 6062. 「2017 山东一轮集训 Day2」Pair给出一个长度为nn的数列{ aia_i }和一个长度为mmm的数列{ bib_i },求{ aia_i }有多少个长度为mm的连续子数列能与{ bib_i }匹配分析 这个题目和今年西安的k 题非常相似……首先bib_i 的孙序不影响匹配,有hall 定理,二分图存在完全匹配当且仅当对于,集合X∀X,|N(X)|≥|X|X\fo

taotao 的大学墓志 1205

Windows 下安装 ros2 的超详细教程

Windows11 ROS安装

2401_83363439的博客 3317

如何在软件复位后保留指定RAM区域的数据

本文主要介绍S32K144的RAM retention功能

北极熊的脖子(16605192620@163.com) 1万+

【LOJ #6062】「2017 山东一轮集训 Day2」Pair(霍尔定理+线段树)

传送门 霍尔定理就是对于二分图的完美匹配 一定有一边的任意一个子集SSS 向另一边的相连的集合大小>=∣S∣>=|S|>=∣S∣ 于是把BBB排序后 连的一定是一个后缀 用线段树维护每个点及以后连了多少条边 那么必须满足vi−i>=0v_i-i>=0vi​−i>=0 线段树维护即可 #include<bits/stdc++.h> using name...

Stargazer的博客 406

DDR5内存ODT模式全解析:5种状态与实战配置指南(附时序图)

本文深入解析DDR5内存的片上终端电阻(ODT)机制,详细阐述了其五种核心状态(终结电阻禁用、RTT_WR、RTT_NOM_RD、RTT_NOM_WR、RTT_PARK)的定义、切换时序与工作原理。通过解读JESD79-5规范中的时序图,并提供基于模式寄存器的实战配置指南与代码示例,帮助硬件工程师和系统开发者优化信号完整性,解决高负载下的稳定性问题,并实现性能与功耗的最佳平衡。

weixin_29221753的博客 562

LOJ #6062. 「2017 山东一轮集训 Day2」Pair

Description 给出一个长度为 \(n\) 的数组 \(a\) 和长度为 \(m\) 的数组 \(b\) ,求 \(a\) 中有多少个长度为 \(m\) 的连续子序列能够和 \(b\) 构成完美匹配 , \(a_i\) 和 \(b_j\) 能够匹配的条件是 \(a_i+b_j>=h\) Solution 运用 \(Hall\) 定理 , 对于每一个子集都要满足相连的点集大于等于这个子...

weixin_30788619的博客 148

Win10更新后黑屏只剩鼠标?火绒误杀explorer.exe的5种自救方案(附详细步骤)

本文详细介绍了Win10更新后出现黑屏只剩鼠标的5种专业修复方案,重点解决火绒误杀explorer.exe的问题。从基础的任务管理器操作到安全模式下的系统修复,再到注册表编辑和系统还原,提供了全面的解决方案,帮助用户快速恢复系统正常运行。

weixin_29306571的博客 636

STM32通过ESP8266连接机智云APP(第二讲,烧录固件并测试)

今天与大家分享STM32通过ESP8266连接机智云APP,并完成数据的上传下发第二讲。带大家一起烧录机智云固件到ESP8266并且将其通过机智云串口助手与APP进行测试。

qq_63267523的博客 1425

LOJ6062「2017 山东一轮集训 Day2」Pair(Hall定理,线段树)

冷知识:洛谷用户 OneInDark 是个狗狗

DD(XYX)的硫氰化氘博客 285

智能化运维(AIOps)

• 调查显示,54.79%的企业当前着重关注智能运维的质量领域(包括异常检测、告警收敛、根因分析、 故障处置等)能力建设,其次45.77%的企业关注效率领域,45.49%的企业关注成本领域,30.82%的 企业关注安全领域。从目前的发展情况来看,现阶段AIOps能力大多集中在L2级别, 主要以系统辅助分析,帮助人工进行决策和操作为主,较为领先的 能力实践可以达到L3级别,而L4和L5级别随着AIOps的技术发展 和能力的逐步增强,将是未来智能运维能力建设的发展方向和目标。

追求更专业的设计 3097

[loj6062]「2017 山东一轮集训 Day2」Pair——Hall定理+线段树

题目大意: 给出一个长度为nnn的数列{ai}{ai}\{ a_i \}和一个长度为mmm的数列{bi}{bi}\{ b_i \}求{ai}{ai}\{ a_i \}有多少个长度为mmm的连续子数列能与{bi}{bi}\{ b_i \}匹配。 两个数列可以匹配,当且仅当存在一种方案,使两个数列中的数可以两两配对,两个数可以配对当且仅当它们的和不小于hhh。 思路: 感觉还是很好的一道题...

ylsoi的博客 705

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

LOJ.6062.[2017山东一轮集训]Pair(Hall定理 线段树)

题目链接 首先Bi之间的大小关系没用,先对它排序,假设从小到大排 那么每个Ai所能匹配的Bi就是一个B[]的后缀 把一个B[]后缀的匹配看做一条边的覆盖,设Xi为Bi被覆盖的次数 容易想到 对于每个i∈[1,m]都要满足 Xi-i >= 0,即min{Xi-i}>=0 (Hall定理) 用线段树维护即可 感觉不需要霍尔定理也能看出来(因为就是显然吧。。) //583ms 4140KiB...

weixin_30568715的博客 164

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

@loj - 6062@ 「2017 山东一轮集训 Day2」Pair

目录 @description@ @solution@ @accepted code@ @details@ @description@ 给出一个长度为 n 的数列 {ai} 与一个长度为 m 的数列 {bi},求 {ai} 有多少个长度为 m 的连续子数列...

weixin_30357231的博客 228

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

loj6062 pair

https://loj.ac/problem/6062 直接套用霍尔定理。 由于A有多个选择,考虑维护B是否合法。 首先B数组的顺序显然是没有用的,可以直接排序。 然后每个A就都变成了向一个后缀连边。 对于B,原本需要check每一个集合是否满足|u|<=|v| 但实际上,只需要考虑最可能导致不合法的条件,也就是让等式右边保持不变的情况下,左边尽可能的大,如果还合法,就可以判定合法。 对于B...

weixin_30730151的博客 137

Hall定理

hall定理是判定二分图是否存在完全匹配的定理。 完全匹配:是指最大匹配数为min(|X|,|Y|) 也就是X或Y集合其中一个集合所有点都被匹配了。 设二分图中G=&amp;lt;V1,V2,E&amp;gt;中 |V1|=m&amp;lt;=|V2|=n,G中存在从V1到V2的完全匹配当且仅当V1中任意k(k=1,2,…,m)个顶点至少与V2中k个顶点是相邻的。 判断是否有完全匹配的方法 ...

Freopen的博客 1万+

loj数列分块入门

数列分块入门入门 1-区间修改-单点查询入门 2-区间加法-区间查询入门 3-区间加法-单点查询入门 4-区间加法-区间查询入门 5-区间开方-区间查询入门 6-单点插入-单点查询入门 7入门 8入门 9 入门 1-区间修改-单点查询 ll n,a[maxn],lazy[maxn]; int main() { n = read; for(int i=1; i<=n; i++) a[i] = read; int blk = sqrt(n); for(int ii=1; ii<=n; ii

PushyTao的博客 1393

【分块入门】LOJ 数列分块入门 1 - 9 (学习更新……)

dl题解_「分块」数列分块入门1 – 9 by hzwer LOJ #6277. 数列分块入门 1 题意:给出一个长为n的数列,以及n个操作,操作涉及区间加法,单点查值。 时间限制:100ms 分块 我们将整个数列划分为很多块,暂且分为n / m块,用block[ i ]记录第 i 个数据arr[ i ]对应的块的个数。O(n)【数据读入时就可以操作完成,block[ i ] = (i ...

L_X_ 2610

Hall定理(二分图匹配问题,Hungary算法基础)

前言 hall定理是判定二分图是否存在完美匹配的定理。 完美匹配:是指最大匹配数为min(|X|,|Y|) 也就是X或Y集合其中一个集合所有点都被匹配了。 定理内容 设二分图中G=中 |V1|=m当且仅当V1中任意k(k=1,2,...,m)个顶点至少与V2中k个顶点是相邻的。 证明 必要性 因为是完美匹配,所以V1中任意k个点都是匹配的,显然至少与V2中k个

Feynman1999的博客 1万+

二分图之Hall定理小记

对于二分图GVE,令Nv表示点v的邻居集,则关于图G:设二分图G的两部分分别为VL​VR​且∣VL​∣≤∣VR​∣,则其存在一个大小为∣VL​∣的匹配当且仅当∀S⊆VL​,都有∣S∣≤∣v∈S⋃​Nv∣。:对于一个k正则二分图(每个点度数都为k,其中k≥1),若其左右点数相等,那么其必有完美匹配。:设二分图G的两部分分别为VL​VR​,则其最大匹配为∣VL​∣−S⊆V。

mamingzhi_2026的博客 2805

Hall定理的证明

Hall定理的证明

weixin_45827703的博客 1410

Hall定理及其充要性证明

Hall定理: 若二分图GGG中两部分的点的集合分别为X,YX,YX,Y下设∣X∣≤∣Y∣|X| \leq |Y|∣X∣≤∣Y∣ 则二分图存在完备匹配当且仅当XXX中的任意kkk个点至少与YYY中的kkk个点相邻 证明 必要性显然. 充分性证明: 反设GGG满足条件且GGG中最大匹配不是完备匹配 则存在x1∈Xx_1 \in Xx1​∈X使得x1x_1x1​未被匹配. 由条件,存在y1∈Yy_1 \in Yy1​∈Y 使得x1,y1x_1,y_1x1​,y1​相邻且y1y_1y1​已被匹配. 所以存在x2∈

qq_45828593的博客 1491

OJ(Online Judge)系统汇总

OJ百度百科 在线判题系统_百度百科 ***Openjudge和Poj 北大OJ(英文),经常服务器坏, Welcome To PKU JudgeOnline 备用网站 OpenJudge - NOI - 首页 ***《信息学奥赛一本通(C++版)》配套OJ 信息学奥赛一本通(C++版)在线评测系统 信息学奥赛一本通(C++版)在线评测系统 难度:中等,适合零基础 啊哈添柴: 在线OJ网站 - 啊哈添柴 ***洛谷 Luogu 洛谷比赛 比赛列表 - 洛谷 有很多网

青少年趣味编程 7810

二部图Hall定理学习笔记

离散数学PPT: Hall定理 定理(Hall定理) 设二部图G=<V1,V2,E>中,|V1|≤|V2|. G中存在从V1到V2的完备匹配当且仅当V1中任意k 个顶点至少与V2中的k个顶点相邻(k=1,2,…,|V1|). 定理 设二部图G=<V1,V2,E>中, 如果存在t≥1, 使得V1中每个顶点至少关联 t 条边, 而V2中每个顶点至多关联t条边,则G中存在...

skyline的分享专栏 5297
上一篇: BZOJ[4896] Trie
下一篇: BZOJ 4025 [并查集][二分图][分治]
Vectorxj
博客等级 码龄11年 35粉丝 231原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值