POJ-3207-TwoSAT
题目大意:一个圆上有m对点需要相连,连的方法可以在圆里外连,问是否可以使得两两连线不相交;
题目解析:判断如果两个线段如果会有冲突,那么只能一个在里面一个在外面;
AC代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#include<stack>
using namespace std;
const int maxn=51010*2;
const int maxm = 51010;
int first[maxn*2];
int vv[maxm*4],nxt[maxm*4],S[maxm*4];
int e,c,n,m;
bool vis[maxn*2];
void addedge(int u,int v)
{ vv[e] = v; nxt[e] = first[u]; first[u] = e++;
} bool dfs(int u)
{ if(vis[u^1]) return 0; if(vis[u]) return 1; vis[u] = 1; S[c++] = u; for(int i = first[u];i != -1;i = nxt[i]) { int v = vv[i]; if(!dfs(v)) return false; } return true;
} bool Judge()
{ n=m;for(int i = 0;i < n*2;i+=2) { if(!vis[i] && !vis[i+1]) { c = 0; if(!dfs(i)) { while(c > 0) vis[S[--c]] = 0; if(!dfs(i+1)) return false; } } } return true;
}
int x[maxn],y[maxn];
bool conflict(int i,int j)
{bool flag = 0;flag |= ((x[j] > x[i] && x[j] < y[i]) && !(y[j] > x[i] && y[j] < y[i]));flag |= ((y[j] > x[i] && y[j] < y[i]) && !(x[j] > x[i] && x[j] < y[i]));return flag;
}
int main()
{while(scanf("%d%d",&n,&m)!=EOF){memset(first,-1,sizeof(first));e=0;memset(vis,0,sizeof(vis));for(int i=0;i<m;i++)scanf("%d%d",&x[i],&y[i]);for(int i=0;i<m;i++){for(int j=i+1;j<m;j++){if(conflict(i,j)){addedge(i*2,j*2+1);addedge(j*2,i*2+1);addedge(i*2+1,j*2);addedge(j*2+1,i*2);}}}if(Judge())printf("panda is telling the truth...\n");else printf("the evil panda is lying again\n");}return 0;
}
POJ-3207-TwoSAT相关推荐
- 解题报告 poj 3207
1. 题目 POJ 3207 2. 题目实质 平面上,一个圆,圆的边上按顺时针放着n个点.现在要连m条边,比如a,b,那么a到b可以从圆的内部连接,也可以从圆的外部连接.问 ...
- poj 3207 Ikki's Story IV - Panda's Trick(2-SAT)
题目链接:http://poj.org/problem?id=3207 思路分析:该问题给出N个点,并给出M条连接这些点的线,需要判断是否这些线不会相交: (1)假设两条线A的端点按照圆圈的顺时针方向 ...
- poj 3207 2-sat
题目链接:http://poj.org/problem?id=3207 #include <cstdio> #include <cmath> #include <algo ...
- POJ.3207.Ikki's Story IV-Panda's Trick(2-SAT)
题目链接 \(Description\) 一个圆上顺序排列0,1,...,n-1共n个点,给出m条线段,线段可以从里面连也可以从外面连,问是否能满足所有线段不相交 \(Solution\) 把每条线段 ...
- POJ 3207 Ikki's Story IV - Panda's Trick (POJ 六道2-SAT之一)
题意:平面上,一个圆,圆的边上按顺时针放着n个点.现在要连m条边,比如a,b,那么a到b可以从圆的内部连接,也可以从圆的外部连接.给你的信息中,每个点最多只会连接的一条边.问能不能连接这m条边,使这些 ...
- poj pku图论、网络流入门题总结、汇总
poj pku图论.网络流入门题总结.汇总 分类: acm图论 2010-08-25 18:49 243人阅读 评论(0) 收藏 举报 网络算法networkgraphconstructioninte ...
- POJ 图论分类 + DP(较全 自己又加了点)
DP -----------动态规划 状态压缩DP 2411 (棋盘规模较大)状态压缩DP+DFS+滚动数组 2664 (棋盘规模较小)直接递推即可(DP) 2506 (棋盘规模较小)直接递推即可(D ...
- 服务器系统检测报告自动生成,生成allure测试报告之后,服务器端口无法访问查看生成的report,可能是这样引起的。...
搜索引擎Solr系列(二): Solr6.2.1 从MySql中导入数据 一:建立MySql测试表,如下图: 二:solr导入配置: 1.新建demo core文件夹,并修改managed-schem ...
- [kuangbin]各种各样的题单
[kuangbin]各种各样的题单 专题1 简单搜索 POJ 1321 POJ 2251 POJ 3278 POJ 3279 POJ 1426 POJ 3126 POJ 3087 POJ 3414 F ...
- (转)2-sat 专题
[2-sat]专题- 2-sat是一个逻辑性很强的算法,但是其套路比较固定,所以不是很热,题目很少,但也不乏AC后让人大呼爽快的好题,下面放出两篇极品论文还有几道题目的题解以供交流-- 2-sat学习 ...
最新文章
- UICollectionView的使用方法
- JavaScript = TypeScript 类入门
- [MySQL FAQ]系列 -- MySQL支持绑定到多个ip上吗
- 【深度学习】基于Colab Pro的TPU训练模型教程(Tensorflow)
- python 类的功能,字符串字节,嵌套等相关学习总结
- 如何做一个内心强大的人
- Zookeeper数据一致性原理
- python ioc框架_轻松理解 Spring 中的 IOC
- python线程池的使用
- 运维自动化部署Cobbler之服务安装篇
- jquery进度条组件
- 【科研论文】Endnote入门指南
- HashMap灵魂26问
- python glob.glob使用
- 硬纪元干货|appMagics伏英娜:优质IP和直播内容嫁接,带来全新AR体验
- 天敏的SDK2000
- 潘建伟:与量子“纠缠”的逐梦者
- android实现监听打电话并录音保存到本地
- 在 Ubuntu 上安装 jstest-gtk 手柄测试
- Linux CentOS 复制文件、替换文件 cp 复制文件、cp 覆盖文件 cp替换文件