算法学习笔记(39): 2-SAT
SAT 问题,也就是可满足性问题 Boolean Satisfiability Problem,是第一个被证明的 NPC 问题。
但是特殊的 2-SAT 我们可以通过图论的知识在线性复杂度内求解,构造出一组解。
基本的模型在 P4782 【模板】2-SAT 中有体现。
经典的标志是:AB 至少选一个,AB 要么都选,要么都不选。
简单的我们就不说了,像 P5782 [POI2001]和平委员会,P6378 [PA2010] Riddle,P4171 [JSOI2010] 满汉全席,P5782 [POI2001] 和平委员会,都是很好的板子。
根据 伍昱 -《由对称性解 2-sat 问题》,我们可以得出:如果要输出 2-SAT 问题的一个可行解,只需要在 tarjan 缩点后所得的 DAG 上自底向上地进行选择和删除。
也就是优先选择缩点后所在连通块编号小的即可。
然而怎么会有这么板板的问题……
给定一个 0/1权有向图,给每个点赋予 ABCD 中的一个字母使得每条有向边都满足:\(w = 1 \iff (t_x, t_y) \in \{(A, D), (A, B), (B, D), (B, A), (C, D), (C, A), (C, B)\}\)
这一眼看不出来是 2-SAT,将关系画出来,大概是:

于是可以分为两组,\(a, b\) 进行 2-SAT。
给定 \(n\) 对 \(m\) 维空间中的点对,求平行于坐标轴且能够覆盖每个点对中至少一个点的 \(m\) 维正方体的边长的最小值,点在正方体的边界上视为覆盖。
二分答案,好抽象,利用 2-SAT 判断。
假如当前选了某个点,那么每一维距离它 \(\gt x\) 的都不可以选,考虑排序之后,这一定是一段前缀和一段后缀,于是可以前后缀优化建图。
然而还有二选一的限制,\(\neg a \to b\) 即可。
于是总复杂度为 \(O(nk \log n)\)。
草莓城是一个个四个角坐标分别为 \(H \times W\) 的矩形,其中有
个草莓,草莓所在的点都是整点。现在要给每个草莓建一个大棚,满足大棚都处在城市内,且互不相交(指被多个大棚覆盖的区域面积为零)。要求每个大棚的形状为等腰直角三角形,对应草莓处于斜边的中点,且斜边与一条坐标轴平行、所有三角形的斜边长度相等。
请你设计一个方案使得斜边的长度最大。
是某种合法的方案。
还是二分 + 覆盖,这和上一题很类似。
但是每一个点有 \(4\) 个状态,于是成功的变成了 4-SAT NPC 问题,成功不可做。
然而可以注意到,将 \(4\) 中状态取交覆盖,发现我们只需要关注对角的二选一即可。

于是变成 \(AD\) 和 \(BC\) 两套 2-SAT 即可。
还有,我们可以 \(O(n^2)\) 建图,那么这道题就十分 naive 了。
算法学习笔记(39): 2-SAT的更多相关文章
- Effective STL 学习笔记 39 ~ 41
Effective STL 学习笔记 39 ~ 41 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- C / C++算法学习笔记(8)-SHELL排序
原始地址:C / C++算法学习笔记(8)-SHELL排序 基本思想 先取一个小于n的整数d1作为第一个增量(gap),把文件的全部记录分成d1个组.所有距离为dl的倍数的记录放在同一个组中.先在各组 ...
- Manacher算法学习笔记 | LeetCode#5
Manacher算法学习笔记 DECLARATION 引用来源:https://www.cnblogs.com/grandyang/p/4475985.html CONTENT 用途:寻找一个字符串的 ...
- Johnson算法学习笔记
\(Johnson\)算法学习笔记. 在最短路的学习中,我们曾学习了三种最短路的算法,\(Bellman-Ford\)算法及其队列优化\(SPFA\)算法,\(Dijkstra\)算法.这些算法可以快 ...
- 某科学的PID算法学习笔记
最近,在某社团的要求下,自学了PID算法.学完后,深切地感受到PID算法之强大.PID算法应用广泛,比如加热器.平衡车.无人机等等,是自动控制理论中比较容易理解但十分重要的算法. 下面是博主学习过程中 ...
- Johnson 全源最短路径算法学习笔记
Johnson 全源最短路径算法学习笔记 如果你希望得到带互动的极简文字体验,请点这里 我们来学习johnson Johnson 算法是一种在边加权有向图中找到所有顶点对之间最短路径的方法.它允许一些 ...
- 算法学习笔记(5): 最近公共祖先(LCA)
最近公共祖先(LCA) 目录 最近公共祖先(LCA) 定义 求法 方法一:树上倍增 朴素算法 复杂度分析 方法二:dfs序与ST表 初始化与查询 复杂度分析 方法三:树链剖分 DFS序 性质 重链 重 ...
- 算法学习笔记(3): 倍增与ST算法
倍增 目录 倍增 查找 洛谷P2249 重点 变式练习 快速幂 ST表 扩展 - 运算 扩展 - 区间 变式答案 倍增,字面意思即"成倍增长" 他与二分十分类似,都是基于" ...
- Miller-Rabin 与 Pollard-Rho 算法学习笔记
前言 Miller-Rabin 算法用于判断一个数 \(p\) 是否是质数,若选定 \(w\) 个数进行判断,那么正确率约是 \(1-\frac{1}{4^w}\) ,时间复杂度为 \(O(\log ...
- 算法学习笔记(9): 中国剩余定理(CRT)以及其扩展(EXCRT)
扩展中国剩余定理 讲解扩展之前,我们先叙述一下普通的中国剩余定理 中国剩余定理 中国剩余定理通过一种非常精巧的构造求出了一个可行解 但是毕竟是构造,所以相对较复杂 \[\begin{cases} x ...
随机推荐
- SURE:增强不确定性估计的组合拳,快加入到你的训练指南吧 | CVPR 2024
论文重新审视了深度神经网络中的不确定性估计技术,并整合了一套技术以增强其可靠性.论文的研究表明,多种技术(包括模型正则化.分类器改造和优化策略)的综合应用显着提高了图像分类任务中不确定性预测的准确性 ...
- JVM简明笔记1:JVM 概述
什么是JVM JVM 即 Java Virtual Machine,中文名为 Java虚拟机. 一般情况下 C/C++ 程序,编译成二进制文件后,就可以直接执行了: Java 需要使用 javac 编 ...
- 有效预警6要素:亿级调用量的阿里云弹性计算SRE实践
简介: 关注保持良好的预警处理,持续解决系统隐患,促进系统稳定健康发展. 编者按:随着分布式系统和业务需求的飞速发展,监控告警在我们保障系统稳定性和事故快速恢复的全周期中都是至关重要的.9月3号,阿里 ...
- 疫情带火了这款APP:2600个学生一天点赞70万次
这几天,全国中小学生经历了"过山车"一样的心情. 因为疫情的不断蔓延,1月27日,教育部下发通知,2020年春季学期延期开学. 随后,教育部又提出"利用网络平台,停课 ...
- 重磅发布:微服务引擎 MSE 专业版
简介: 性能提升 10 倍,更高的 SLA 保障,新用户限时抢购 8 折资源包. 微服务引擎 MSE 专业版发布,支持 Nacos 2.0 ,相比基础版,专业版具有更高的 SLA 保障,性能提升十倍, ...
- 重磅 | 数据库自治服务DAS论文入选全球顶会SIGMOD,领航“数据库自动驾驶”新时代
简介: 近日,智能数据库和DAS团队研发的智能调参ResTune系统论文被SIGMOD 2021录用,SIGMOD是数据库三大顶会之首,是三大顶会中唯一一个Double Blind Review的,其 ...
- 1.prometheus源码安装
一.prometheus安装前准备 prometheus官网:https://prometheus.io/ grafana官网:https://grafana.com/ 资源下载: # 1.资源下载 ...
- Java开启异步的两种方式
二.Java开启异步的两种方式 1.注解开启:@Async 1.1.配置异步的线程池 必须配置异步线程池,否则异步不会生效. @EnableAsync 注解:指定异步线程池.不指定默认使用:Simpl ...
- Git实战技巧:恢复被强制push -f失踪的代码
前言 Git是一个易学难精的分布式版本控制系统,被我们码农常用于代码的管理.如果你还不了解Git,建议先通过廖雪峰的Git教程进行了解,再来看本文,因为本文以使用技巧为主,不会在基础名词上做过多解释. ...
- 2021~2022Apache大数据相关项目盘点
一.晋升为Apache TLP(Top-Level Project)的大数据相关项目 1.1.Apache DataSketches (20210203) 1.2.Apache Gobblin (20 ...