当前位置: 首页 > news >正文

CF1630F 题解 | 网络流

传送门

题意

给你一个长度为 \(n\) 的序列 \(a\),构建一个无向图:若 \(a_i | a_j\),则在 \(i\)\(j\) 中连边。

求最少删除多少个点,才能使得剩下的图是二分图。

思路

首先,我们知道倍数关系是一个偏序关系,即 \(a_i | a_j, a_j | a_k \rightarrow a_i | a_k\)

所以,一旦出现了一个长度 \(\ge 3\) 的链,那么就会出现奇环,就不可能是二分图。
也就是说,最后的图中每个点的度数都 \(le 1\),可以将边定向(不妨设是大的数向小的数连边),转换成每个点要么有入度,要么有出度。
考虑拆点,\(x_0\) 表示 \(x\) 这个数有出度,\(x_1\) 则表示这个点有入度。

拆点后,将互相矛盾的状态连边(无向边),得到一个新图,显然,这个图的最大独立集就是最后能保留下来最多的数个数。

但是,普通图的最大独立集是 NPC,考虑怎么转换这个图。
因为我们就是从一个有偏序关系的图得到的这个图,很自然地想让它也有偏序关系。

把这个图定向,变成有向图(大连向小),显然得到了一个 DAG,同时还是偏序集。
那么这个时候,答案是这个图的最大独立集,也是偏序集的最长反链。
根据 Dilworth 定理,可以转换为偏序集的最小链覆盖,做完了。

补充知识

最小链覆盖

即,在一个图上用最少的链覆盖这个图的所有边。

求法

拆点,将每个点拆成入点和出点。
把每条边转换,得到了一个二分图。

此时,每一个匹配都会将两个链合并,于是最小链覆盖 = 总点数 - 最大匹配 = 总点数 - 最大流

偏序集及相关知识

偏序集

若集合 \(S\) 和其上的一个二元关系 \(\preceq\) 满足性质:

  • 自反性:\(\forall a \in S, a \preceq a\)
  • 反对称性:\(\forall a, b \in S, a \preceq b \land b \preceq a \Rightarrow a = b\)
  • 传递性:\(\forall a, b, c \in S, a \preceq b \land b \preceq c \Rightarrow a \preceq c\)

\(S\) 是偏序集,\(\preceq\) 是其上的偏序。

一个显然的例子是 \(\mathbb{N}, \mathbb{Z}, \mathbb{Q}, \mathbb{R}\) 都关于二元关系 \(\leq\) 构成偏序。

全序集

类比偏序集理解。

若集合 \(S\) 和其上的一个二元关系 \(\preceq\) 满足性质:

  • 自反性:\(\forall a \in S, a \preceq a\)
  • 反对称性:\(\forall a, b \in S, a \preceq b \land b \preceq a \Rightarrow a = b\)
  • 传递性:\(\forall a, b, c \in S, a \preceq b \land b \preceq c \Rightarrow a \preceq c\)
  • 连接性:\(\forall a, b \in S, a \not = b \Rightarrow a \preceq b \lor b \preceq a\)

\(S\) 为全序集,\(\preceq\) 是其上的全序。

偏序集的链与反链

偏序集 \(S\) 上的链是其全序子图 \(T\),具体地,\(\forall a, b \in T, a \not = b \Rightarrow a \preceq b \lor b \preceq a\)
即链上的任意两点都可以比较(可以比较即在某一顺序上满足偏序关系)。

偏序集 \(S\) 上的反链是集合 \(T\) 满足,\(\forall a, b \in T, a \not = b \Rightarrow a \not \preceq b \land b \not \preceq a\)
即反链上任意两点都不可以比较。

http://www.rkmt.cn/news/7603.html

相关文章:

  • 攻防世界-secret-galaxy-300 - xxx
  • 实用指南:LeetCode 面试经典 150_哈希表_单词规律(41_290_C++_简单)
  • 代码随想录算法训练营第二天 | leetcode 209
  • mpv硬件解码
  • 2025.9.78——卷6-8选择
  • 好烦
  • 用 Go 语言与 Tesseract OCR 识别英文数字验证码
  • FreeRTOS和LVGL组合使用教程
  • Linux中 sed命令忽略大小写匹配
  • VISA Resource name
  • 交叉编译openharmony版本的gdb
  • 高数
  • office2024免费永久激活版下载安装教程:含激活步骤 + 一键安装包下载
  • 05-条件查询
  • 完整教程:液氮低温恒温器的应用领域
  • 轮转数组-leetcode
  • CF1864G Magic Square
  • OI TRICKS
  • 深入解析:Okular开源免费的跨平台文档查看神器
  • day37大模型程序开发-GraphRAG理论
  • day10-AI短视频01
  • 【每日算法】两数相加 LeetCode - 教程
  • MacCAD2019.dmg 安装包使用教程|Mac电脑安装CAD2019全流程
  • 初始化一个rust环境
  • 编程里边有好多不容易触及的知识点
  • PostgreSQL repmgr 高可用之故障转移
  • 25.9.18随笔联考总结
  • P3642 [APIO2016] 烟花表演 解题报告
  • Slope Trick 学习笔记
  • sql server 折腾时不小心去掉了 sysadmin 权限