首页 > 其他分享 >一些简单的偏序问题

一些简单的偏序问题

时间:2024-11-26 22:35:24浏览次数:6  
标签:偏序 preceq 长度 forall 简单 序列 一些 反链

首先,你要会二维偏序(最长上升子序列),这样就可以了(三维偏序等不需要)。


这里引入一个重要的关于偏序的定理:狄尔沃斯(Dilworth)定理。

  • 偏序:对于一个集合 \(S\),偏序是它上面的一个二元关系 \(\preceq\),满足自反性 \(\forall a\in S,a\preceq a\),传递性 \(\forall a,b,c\in S(a\preceq b\wedge b⪯c)\Longrightarrow a\preceq c\),以及反对称性 \(\forall a,b\in S(a\preceq b\wedge b\preceq a)\Longrightarrow a=b\)。

  • 链:对于集合 \(S\) 的子集 \(T\),如果 \(T\) 中任意两个元素均可比(即 \(\forall a,b\in T,a\preceq b\vee b\preceq a\)),则称 \(T\) 为链,称 \(|T|\) 为链的长度。

  • 反链:对于集合 \(S\) 的子集 \(T\),如果 \(T\) 中任意两个元素均不可比(即 \(\forall a,b\in T,a\not\preceq b\wedge b\not\preceq a\)),则称 \(T\) 为反链,称 \(|T|\) 为反链的长度。

  • 最小链/反链划分:将 \(S\) 划分为最少的集合 \(T_1,T_2,\cdots,T_k\),使得所有 \(T_i\) 均为链/反链,这个链/反链划分的大小为 \(k\)。

狄尔沃斯定理的叙述为:对于任意偏序集 \(S\),最长反链长度等于最小链划分,最长链长度等于最小反链划分(证明不在此赘述,如有需要请自行查找资料)。


这个定理很抽象,我们来看一个简单一点的例子。

P1020 [NOIP1999 提高组] 导弹拦截

给定一个长度为 \(n\) 的序列 \(a\),需要你求出其最长不上升子序列长度,以及最少能够划分成多少个不上升子序列(\(1\le n\le 10^5\))。

第一问很好做,对于第二问,考虑狄尔沃斯定理,一个很常见的手法就是将一个序列转化为点对 \((i,a_i)\),再定义偏序关系 \((x_1,y_1)\preceq (x_2,y_2)\Longleftrightarrow x_1\le x_2\;\wedge y_1\ge y_2\),容易发现这种偏序关系中的链代表一个不上升子序列,反链代表一个上升子序列。狄尔沃斯定理告诉我们,最长链长度等于最小反链划分,最小反链划分就是第二问的答案,最长链的长度就是最长上升子序列的长度,那么第二问的答案就是最长上升子序列的长度。

是不是对狄尔沃斯定理有了一定的了解,再来看一道题。


CF1620F Bipartite Array

定义一个序列长度为 \(n\) 的序列 \(a\) 对应一个图 \(G\) 如下生成:

  • \(G\) 有 \(n\) 个点;
  • 如果 \(i,j\) 满足 \(i<j\wedge a_i>a_j\),则 \(G\) 中有 \(i\leftrightarrow j\) 的无向边。
    如果 \(G\) 是二分图,称 \(a\) 是 bipartite array。
    给定一个长度为 \(n\) 的排列 \(a\),判断能否通过将一些数改成其相反数而使得排列变为 bipartite array。如果可以,输出方案。

标签:偏序,preceq,长度,forall,简单,序列,一些,反链
From: https://www.cnblogs.com/lrx-blogs/p/18571111

相关文章

  • 基于Java+SpringBoot+Mysql在线简单拍卖竞价拍卖竞拍系统功能设计与实现十
    一、前言介绍:免费学习:猿来入此1.1项目摘要主要源于互联网技术的快速发展和电子商务的普及。随着网络技术的不断进步,人们越来越依赖于互联网进行购物、交易和沟通。电子商务的兴起为在线拍卖提供了广阔的市场和便利的条件。在线拍卖系统通过搭建一个虚拟的拍卖平台,将传统的拍卖......
  • 基于Java+SpringBoot+Mysql在线简单拍卖竞价拍卖竞拍系统功能设计与实现九
    一、前言介绍:免费学习:猿来入此1.1项目摘要主要源于互联网技术的快速发展和电子商务的普及。随着网络技术的不断进步,人们越来越依赖于互联网进行购物、交易和沟通。电子商务的兴起为在线拍卖提供了广阔的市场和便利的条件。在线拍卖系统通过搭建一个虚拟的拍卖平台,将传统的拍卖......
  • 初学者入门Linux系统的一些内容
    第一阶段:基础知识了解Linux的背景什么是Linux?Linux的历史与发展开源与GNU的概念Linux的主要发行版(如Ubuntu、CentOS、Debian等)Linux的基本组成内核(Kernel)Shell与命令行界面文件系统(Filesystem)第二阶段:基本操作Linux桌面环境安装常用的Linux发行版(建议选择Ubuntu或Fedo......
  • vs2022 编译 easyMule 碰到的一些问题
    背景easyMule是很早之前的源码,c++的版本也非常低,导致编译的时候碰到了几个问题。问题解决'auto_ptr':isnotamemberof'std'auto_ptr已经被弃用了,直接把auto_ptr修改为unique_ptr即可。重新编译,报错:namespace"std"hasnomember"unique_ptr"在文件的头文件......
  • 基于Angular+BootStrap+SpringBoot简单的购物网站
    目录一、项目结构图二、目录结构解析后端(SpringBoot)前端(Angular)三、技术栈四、具体功能实现五、数据库设计六、后端实现1.设置SpringBoot项目2.数据库实体类3.创建Repository4.创建Service层5.创建Controller层七、前端实现(Angular)1、创建Angula......
  • 一些常见快捷键使用
    最常用ctrl+c/v/d/w/s,分别为复制、粘贴、复制一行或选中内容粘贴在后面、退出、保存按住ctrl+alt,此时可以单击鼠标左键选中同列多行,比如你要给多行的同一列添加内容,就可以使用alt+Tab,切换到最近打开的应用或浏览器页面idea中,当光标在方法内时,alt+回车可以快速生成new的对象al......
  • 如何使用 Node.js 和 MySQL 快速搭建简单的增删查改 API
    摘要通过本文,你将学会如何使用Node.js和MySQL搭建一个简单的RESTfulAPI,包括创建数据库、创建表、插入数据、查询数据、更新数据以及删除数据的完整操作示例。正文在现代Web开发中,Node.js与MySQL的组合非常流行,它们的高性能和易用性让开发者可以快速搭建数据驱动的......
  • 修改王者荣耀战区(实测有效+全网最简单)
    第一步:下载APP        FakeLocation是一款用于模拟地理位置的软件,它允许用户在Android设备上修改GPS定位,从而伪装自己的地理位置。这款软件可以用于各种场景,比如社交媒体定位、游戏等。本文需利用其进行游戏定位的修改。    为了方便各位,本文已将资源......
  • P5572 [CmdOI2019] 简单的数论题 题解
    题目描述\(T\)组数据,给定\(n\gem\),求:\[\sum_{i=1}^n\sum_{j=1}^m\varphi(\frac{\text{lcm}(i,j)}{\gcd(i,j)})\\\]对\(23333\)取模。数据范围\(1\leT\le3\cdot10^4,1\lem\len\le5\cdot10^4\)。时间限制\(\texttt{2s}\),空间限制\(\texttt{128......
  • 对GaussDB数据库和数据管理的简单介绍
    一、前言数据库与数据管理有着密切的关系,两者共同构成了一个完整的、可扩展的数据库管理系统。数据库是用于存储数据的系统,为数据提供了安全、可靠、可扩展和可管理的存储环境。随着信息技术的飞速发展,数据已经成为企业的核心资产之一。在这个数据驱动的时代,数据管理成为了企业......