2-sat即2元约束问题

下面不加证明地描述一种较优的解法:

为每个需要被判定的量建立true、false两个节点,方便起见称它们为互斥节点。

将约束条件抽象为代表推导关系的有向边。

tarjan缩点,若有一对互斥节点在同一强连通分量中则无解

将缩点后的森林中每条边反向,按照dfs序进行如下操作:

(初始时所有节点为无色)

若当前节点未被染色,染成红色,然后将所有互斥点所在有向子树中的点全部染成黑色。

否则什么都不做,继续处理下一个节点

(可以证明上述操作不会使同一个节点被染上两种颜色)

最终所有红色节点构成解集。

时间复杂度O(n+m)

注意:3-sat问题是NPC问题

例题:【NOI2017游戏】(本题需要先枚举可能性过多的节点)

2-SAT问题的一种解法(简明易懂)相关推荐

  1. C语言-杨辉三角的三种解法-简单易懂篇

    杨辉三角 1.创建二维数组 2.递归方法 3.利用公式求每一个杨辉三角的元素 这里我们先实现第二张图的这种杨辉三角,在第二张图的基础上加上对数字前面空格的控制就好了,这个不难实现,重点是先把杨辉三角成 ...

  2. Leetcode 855. Exam Room 考场就座:提供两种解法

    Leetcode 855. Exam Room 考场就座: 提供两种解法 855. Exam Room 考场就座(两种解法) 题目描述 示例: 解答1 代码1 解答2 代码2 855. Exam Ro ...

  3. usaco Ordered Fractions 顺序的分数(两种解法)

    这题很好玩,这里有两种解法. 第一种我自己写的,先找到所有的既约真分数,然后写了一个cmp函数进行排序最后输出.我写的时候还在想这章不是搜索吗这跟搜索关系不大吧,难道是怕我们思维定式化故意出的题不是搜 ...

  4. 青蛙跳台阶c语言递归函数,青蛙跳台阶问题的四种解法

    http://raychase.iteye.com/blog/1337359 题目:一只青蛙一次可以跳1级台阶,也可以跳2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 这道题还被ITEye放在了博 ...

  5. opengl正方形绕点旋转_一题十五种解法够不够? 旋转,构造,四点共圆乐不停...

    平移,旋转,轴对称是我们初中学习的"几何三大变换".在我们初中阶段学习的几何知识中占据着核心的地位,特别是旋转,那更是核心中的核心(河南中考22题年年考). 如何更好的理解旋转,如 ...

  6. 约瑟夫环问题的两种解法(详解)

    约瑟夫环问题的两种解法(详解) 题目: Josephus有过的故事:39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓.于是决定了自杀方式,41个人排成一个圆 ...

  7. 牛客--追债之旅 两种解法

    文章目录 第一种 第二种: 一共两种解法,所以即便你不会最短路,也可以做,甚至爆搜+剪枝的时间和空间消耗小于最短路做法. 第一种 题意: 小明现在要追讨一笔债务,已知有n座城市,每个城市都有编号,城市 ...

  8. java binarytreenode_LeetCode算法题-Binary Tree Paths(Java实现-3种解法)

    这是悦乐书的第199次更新,第206篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第62题(顺位题号是257).给定二叉树,返回所有根到叶路径.例如: 输入: 1 / \ ...

  9. 关于leetcode第K个最大元素的几种解法

    对于这一题我使用了最大堆,快速排序,归并排序几种解法来做这一题,速度最快的是归并排序 使用定值的最小堆每次更新数组最后剩下前k个最大元素,而且堆顶就是我们要的第K个元素. 堆排序: import he ...

  10. [简单题]自定义取余(三种解法)C++实现

    题目链接: 点击打开原题链接 题目意思,就是标题意思. 第一种解法:(加法迭代)用加法来模拟这个(17行代码) int mod256WithoutMod(int number) {if (number ...

最新文章

  1. 微盟创始人孙涛勇回应员工删库;字节跳动推“头条搜索”独立 App;C++ 20 规范完成| 极客头条...
  2. 开源Jekyll助您构建你的网站
  3. ngnix+keepalived 实现N主高可用负载均衡web群集
  4. ASP解析JSON例子
  5. SQLmap学习使用
  6. SpringAOP-基于@AspectJ的简单入门
  7. Linux操作系统中ps命令常见用法
  8. matplotlib读取png文件错误ValueError: invalid PNG header
  9. 3 ROC曲线和PR曲线和AUG
  10. AdSense后台添加美国税务信息W-8BEN纳税表秒过的详细操作图文教程
  11. 计算机无法为u盘保存所有数据,U盘不能写入数据怎么办
  12. 像素画,治愈系超萌!看了这个,我都心痒了
  13. LOD原理及相关实现方式
  14. Aleo的PoSW共识
  15. 重装fedora17之后的一些配置
  16. 整车智能-浅谈“车内生命体征检测方案”
  17. postcss-pxtorem使用方式
  18. 任务态fMRI测量的重测可靠性:新的实证证据和元分析
  19. 基于Android平台的公交线路查询系统app
  20. iOS 名片识别代码

热门文章

  1. PySide6 Qt python官方帮助文档离线打包下载
  2. 火山PC布局器套布局器
  3. SAP案例教程FIAA固定资产前台操作
  4. java adb命令_从Java程序执行ADB命令
  5. Qt5串口助手(QSerialPort)
  6. 通达信自动提示启明星、黄昏星K线组合形态(含指标公式源码)
  7. android接听ios电话,有了这个神器,在PC上也能接听iPhone电话、收发短息啦(安卓也可以哦~)...
  8. Ubuntu20.04 配置阿里云源
  9. 小心!WPS正在监控你的电脑!浏览记录
  10. EJB3与EJB2架构对比