2-SAT
里阿奴摩西
这个作者很懒,什么都没留下…
展开
-
[二分答案 2-SAT验证 前后缀优化建图] Codeforces 587D #326 (Div. 1) D. Duff in Mafia
大概题意是删去一组边 这组边是一个匹配 剩下的边 同一颜色的一组边也形成一个匹配 使删去的边最大值最小 这个考虑二分答案 然后检验大于答案的边必然保留同一个点连的同一颜色的边最多保留一条同一个点连的边最多删除一条这个某些边集最多删一条怎么处理 把他排成一排 那么一个点选了 他的前面都不能选 后面都不能选 那么建前后缀使得边数降到O(n)O(n) 要是裸建图的话是O(n2)O(n^2)原创 2017-02-07 16:49:13 · 997 阅读 · 0 评论 -
[二分答案 2-SAT验证 前缀后缀优化建图 线段树优化建图] Codeforces gym 100159 Facebook Hacker Cup 2012 I. Unfriending
二分答案 我们需要解决 对于一个点选了 一段不能选 这个裸建图肯定不行 那么我们用前后缀和线段树 优化建图 具体看代码 或 [二分答案 2-SAT验证 前后缀优化建图] Codeforces 587D #326 (Div. 1) D. Duff in Mafia 有一个细节 当冲突的个数超过一定大的值时是不可能有解的 这里dls教我说1.2∗1061.2*10^6这个题只有两个点 一个还是原创 2017-02-07 16:58:40 · 1132 阅读 · 0 评论 -
[2-SAT 字典序最小解 暴力dfs 模板题] HDU 1814 Peaceful Commission
模板题啦 暴力dfs的理论复杂度据说是O(nm)O(nm)的 但是表现很优越嘛 这个跟tarjan比有个好 就是能求字典序最小解#include<cstdio> #include<cstdlib> #include<algorithm> #include<vector>#include<cstring>#define cl(x) memset(x,0,sizeof(x))usin原创 2017-02-01 22:48:45 · 455 阅读 · 0 评论 -
[2-SAT 任意解 Tarjan 模板题] POJ 3683 Priest John's Busiest Day
得好好说说2-SAT这个东西啦 我们研究下这篇论文 由对称性解2-SAT问题–伍昱 论文中提到的一种方法是 对建完的图跑一边Tarjan 跑出强连通分量 如果两个相关变量也就是xx和x′x'在同一个SCC里 那么就是无解 否则提出了一种基于缩点后反图拓扑排序和染色的一种输出方案的方法 这样我觉得麻烦了点 首先 反图的拓扑序 就是我们生成SCC的顺序 这很显然 而且反图不反图也无所谓 反原创 2017-02-01 23:03:13 · 954 阅读 · 0 评论 -
[2-SAT] Codeforces 668E #348 (VK Cup 2016 Round 2, Div. 1 Edition) E. Little Artem and 2-SAT
题解 Let’s build for both 2-SAT formulas implication graph and let’s find strong connected components in this graph. If both of the formulas are not satisfiable then the answer is SIMILAR. If only on原创 2017-03-09 11:41:37 · 619 阅读 · 0 评论 -
[2-SAT 构造] Codeforces Gym 101173 CERC 16 L. Lost Logic
题目大意 给nn个01变量的三种取值 构造形如 (!)a->(!)b 的限制 使得有且仅有这三个满足 首先我们可以把三个值一样的变量去掉 只要一个限制就够了 然后剩下6类 类内部的变量一定两两相同 那么加一下限制 完全互补的两类可以合并 只要分别取出代表 限制两个一定相反就好了 这样我们最多剩下三类一类 显然不需要限制两类 去两个代表 这两个变量的值组成的二元组只有三种值是有效的 实际上原创 2017-03-31 20:07:10 · 672 阅读 · 0 评论 -
[Trie树建图 2-SAT] Codeforces Gym 101190 NEERC 16 B. Binary Code
把所有串都扔进字典树 如果有两个是祖先和子孙的关系 就不能共存 那么我们直接用字典树辅助建一下图 跑2-SAT就好了 说起来真轻松#include<cstdio>#include<cstdlib>#include<algorithm>#include<stack>#include<vector>using namespace std;inline char nc(){ static原创 2017-03-07 20:36:43 · 1321 阅读 · 0 评论