![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
2-SAT
huanghongxun
这个作者很懒,什么都没留下…
展开
-
HDU 3622 Bomb Game 2-SAT 二分答案
一个游戏,Robbie每轮有2个格子可以选一个放置相同的炸弹,爆炸半径可控,但前提是炸弹爆炸范围(即圆)不能相交,求最大半径。似乎转化为判定性问题好做些。 二分爆炸范围。 如果两个格子欧几里得距离小于二倍的半径就不能同时选,连边即可。#include <cstdio>#include <memory.h>#include <cmath>#include <algorithm>using原创 2016-03-25 22:20:30 · 405 阅读 · 0 评论 -
POJ 2749|Building roads|2-SAT|二分答案
#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;#define rep(i,j,k) for(i=j;i<k;++i)#define ms(i) memset(i,0,sizeof(i))const int N = 20005, M = 600000;原创 2016-03-27 00:11:07 · 620 阅读 · 0 评论 -
BZOJ 1997 HNOI 2010 Planar 2-SAT
已知图和其哈密尔顿回路,判断是否是平面图。平面图要求边不相交,而哈密尔顿回路是圈(废话),其他的边都可以看作是在圈上,那么问题就变成POJ 3207了。。。但是发现构出来的图是无向图所以并查集就好了 然而并查集比Tarjan慢,毕竟复杂度多了个logn\log nTarjan:#include <cstdio>#include <algorithm>#include <cstring>usi原创 2016-03-27 10:50:37 · 419 阅读 · 0 评论 -
BZOJ 1823 JSOI 2010 满汉全席 2-SAT
水题。。貌似和POJ某题很像,输入也很像。。#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define ms(i) memset(i,0,sizeof i)#define rep(i,j,k) for(i=j;i<k;++i)const int N = 1005, M = 60000原创 2016-03-27 10:10:19 · 537 阅读 · 0 评论 -
POJ 2296 Map Labeler 2-SAT 二分
有n个点,只能位于某个正方形的上或下边的中点上,所有正方形边长相等且不重叠,求最大边长。 二分答案。 如果某两个点的x坐标不小于边长就无所谓。 如果小于,就得考虑在上面下面的问题。 如果y坐标小于边长,那么就必须一个放上一个放下; 如果相等,一个上一个中,一个中一个下; 如果小于两倍边长,那么上、中上、中下、下。#include <cstdio>#include <cstring>#原创 2016-03-26 23:17:12 · 360 阅读 · 0 评论 -
POJ 3648 Wedding 2-SAT
一对夫妻不能对着坐,一些人不能对着坐,求可行方案。 显然夫妻可以算作一个状态,于是2-SAT。。#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;#define sqr(i) ((i)*(i))#define ms(i) memset(i,0,sizeof原创 2016-03-26 19:26:34 · 502 阅读 · 0 评论 -
HDU 4115 Eliminate the Conflict 2-SAT
Alice已知N轮剪刀石头布中Bob出的是什么。 同时Alice存在(a,b,c),c=0表示第a和b轮出拳相同,否则不同。 问Alice是否存在可行方案不输。因为必须不输,所以实际只有2种选择。。按冲突建图就好了#include <cstdio>#include <memory.h>#include <cmath>#include <algorithm>using namespace原创 2016-03-26 18:05:27 · 416 阅读 · 0 评论 -
HDU 1814 POI 2001 Peaceful Commission 2-SAT
正常的顺序跑一次2-SAT输出答案就好了。。#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;#define ms(i) memset(i,0,sizeof(i))const int N = 16005, M = 40005;struct TwoSAT {原创 2016-03-26 14:25:52 · 529 阅读 · 0 评论 -
POJ 3678 Katu Puzzle 2-SAT
和上一篇差不多,代码稍多#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;#define rep(i,j,k) for(i=j;i<k;++i)#define sqr(i) ((i)*(i))#define ms(i) memset(i,0,sizeof(原创 2016-03-25 23:14:24 · 466 阅读 · 0 评论 -
HDU 3715 Go Deeper 2-SAT 二分答案
if dep<m and x[a[dep]]+x[b[dep]]!=c[dep] then go(dep+1,n,m) 意思就是说,对于dep=0~m-1,有所有的不等式都成立。 而c[dep]只有3种取值取0时,x[a[dep]]和x[b[dep]]不同时为0取1时,x[a[dep]]和x[b[dep]]不为0和1或1和0取2时,x[a[dep]]和x[b[dep]]不同时为1于是2-原创 2016-03-25 22:56:46 · 568 阅读 · 0 评论 -
POJ 3207|Ikki's Story IV - Panda's Trick|2-SAT
在圆上连m条边,可以在圆内或圆外,问是否存在可行方案使边不相交。讨论边之间的关系,为每条边建立2个节点,分别表示在圆内和圆外。显然通过边的端点易知是否必须两侧,如果是,那么添加限制,即分别连接两条边的圆内和圆外的表示点。如果存在某条边的两个点联通,那么就不存在可行方案。#include <cstdio>#include <algorithm>using namespace std;#defin原创 2016-03-25 18:37:12 · 454 阅读 · 0 评论