2-sat
kalilili
双眼闭三年。
展开
-
HDU 3622 Bomb Game(二分+2-sat)
题意:给n对炸弹可以放置的位置(每个位置为一个二维平面上的点),每次放置炸弹是时只能选择这一对中的其中一个点,每个炸弹爆炸的范围半径都一样,控制爆炸的半径使得所有的爆炸范围都不相交(可以相切),求解这个最大半径.思路:二分半径,建图再2-sat判有无解。收获:原来tarjan执行后,在同一个强连通分量里的low[]也不一定相同,我以为一定相同,直接用low来是否在一个判原创 2015-05-05 11:59:58 · 704 阅读 · 0 评论 -
POJ 3905 Perfect Election (初学2-Sat)
这篇从原理上理解2-sat如何转化成图论问题简述了如何了实现算法:http://wenku.baidu.com/view/31fd7200bed5b9f3f90f1ce2.html总的来说2-sat有两种算法,一种用dfs染色搜索出一种解,一种用tarjan(判定是否有解)+拓扑排序构造出任意一个可行解。dfs从理论上复杂度很高,但是实际上远远达不到上界,而且可以按字典序搜索,实现也简单多原创 2015-04-23 22:22:04 · 715 阅读 · 0 评论 -
Codeforces Round #315 (Div. 1) C. New Language(2-sat+贪心)(好题)
大致题意:a~z每个字符分辅音和元音C和V,给出构词的法则,(pos1,kind1,pos2,kind2)如果位置1是kind1类型的字符,那么位置2必须是kind2类型的字符,求字典序不小于某个给定字符的合法构词(长度和给定的字符相等)若不存在输出-1长度n思路:可以贪心枚举每一位,假设前pos位答案和给定字符相等,那么pos+1位的字符必须比给定的字符pos+1位的字符原创 2015-08-21 12:05:49 · 1133 阅读 · 0 评论 -
CodeForces 228E The Road to Berland is Paved With Good Intentions (2-Sat)
题目地址: http://codeforces.com/problemset/problem/228/E E. The Road to Berland is Paved With Good Intentionstime limit per test1 secondmemory limit per test256 meg原创 2015-07-09 00:25:37 · 1138 阅读 · 0 评论 -
POJ 3678 Katu Puzzle (2-sat基础)
题意:每个数只有0,1两种可能,给出两两之间的AND,OR,XOR的值,判断有没有解裸题。#include#include#include#includeusing namespace std;const int N = 2010;struct Edge{ int v,next;}es[N*N];int head[N];int n,m;int tmp[N],原创 2015-05-13 15:27:18 · 661 阅读 · 0 评论 -
HDU 1814 Peaceful Commission(2-sat 输出字典序最小解 )
dfs求字典序最小的2-sat解方法:如果原图中的同一对点编号都是连续的(01、23、45……)则可以依次尝试第0对、第1对……点,每对点中先尝试编号小的,若失败再尝试编号大的。这样一定能求出字典序最小的解(如果有解的话),因为一个点一旦被确定,则不可更改。如果原图中的同一对点编号不连续(比如03、25、14……)则按照该对点中编号小的点的编号递增顺序将每对点排序,然后依次扫描排序后的原创 2015-05-13 15:11:26 · 1127 阅读 · 0 评论 -
HDU 4115 Eliminate the Conflict(2-sat 判解存在性)
题意:有两个人玩一个石头剪刀布的游戏,两个人连续玩N轮,给出其中一个人的N轮出的情况和该人对另外一个人的一些限制条件,有两种限制:每种限制表示为:(a,b,c) ,如果c==0 则表示该人对另外一个人的限制为第a局和第b局出的应该一样,如果c==1表示不一样,问另外一个人是否有赢(规定每轮都不输就称赢)的可能。思路:所以可以推出每轮必须出能平或赢的动作(两种选择)所以是2-sat。再找原创 2015-05-13 15:31:35 · 827 阅读 · 0 评论 -
POJ 2296 Map Labeler(二分边长+2-sat判解)(经典题)
题意:给你n个点,要你在这n个点上放一个正方形,点只能在正方形的上边或下边的中点上,所有正方形大小一样,不能重叠,求最大的正方形。经典的题目,找约束关系要经过一些讨论。//320 KB 16 ms #include#include#include#includeusing namespace std;const int N = 222;int n;struc原创 2015-05-13 15:23:13 · 761 阅读 · 0 评论 -
POJ 3207 Ikki's Story IV - Panda's Trick(2-sat判解存在性)
题意:平面上,一个圆,圆的边上按顺时针放着n个点。现在要连m条边,比如a,b,那么a到b可以从圆的内部连接,也可以从圆的外部连接。给你的信息中,每个点最多只会连接的一条边。问能不能连接这m条边,使这些边都不相交。算比较裸的题目了,关键找到如何判断两对点交不交叉的关系就好#include#include#include#include#includeusing namespac原创 2015-05-13 15:18:37 · 624 阅读 · 0 评论 -
Codeforces Round #441 E. National Property (2-sat tarjan后输出任意一组合法解)
题目链接:http://codeforces.com/contest/876/problem/E题意:现在我们想要让所有行的字典序升序排列,且对于每一种数字,我们可以采用一种变换,比如 x->x' ,所有加 ' 的都比不加小,问是否可以找到一种变换使得原序列升序。 思路:只要相邻两行满足升序则原序列升序。于是我们考虑相邻的两行 a,b ,找到第一原创 2017-10-23 09:26:37 · 513 阅读 · 0 评论