题目传送门

题意:在一个圆上顺时针安放着n个点,给出m条线段连接端点,要求线段不相交,线段可以在圆内也可以在圆外,问是否可以。

思路:假设一条线段,放在圆外是A,放在园内是A',那么两条线段如果必须一个放圆内一个放圆外的条件就是 端点区间相交(严格相交),所以就建立了2-SAT模型,然后跑2-SAT的模板就可以了。

//#include<bits/stdc++.h>
#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<string.h>
#define clr(a,b) memset(a,b,sizeof(a))
typedef long long ll;
using namespace std;
const int maxn=;
bool vis[maxn<<];
int n,m;
int head[maxn<<],tot;
struct edge{
int to,Next;
}a[maxn<<];
struct node{
int x,y;
}b[maxn];
void addv(int u,int v){
a[++tot].to=v;
a[tot].Next=head[u];
head[u]=tot;
}
int top,sta[maxn<<];
bool dfs(int u){
if(vis[u^])return false;
if(vis[u])return true;
vis[sta[++top]=u]=;
for(int i=head[u];i!=-;i=a[i].Next)
{
int v=a[i].to;
if(!dfs(v))return false;
}
return true;
}
bool Two_sat(){
for(int i=;i<(n<<);i+=)
{
if(vis[i]||vis[i^])continue;
top=;
if(!dfs(i)){
while(top)vis[sta[top--]]=;
if(!dfs(i^))return false;
}
}
return true;
}
bool cal(int i,int j){
if(b[i].x<b[j].x&&b[j].x<b[i].y&&b[i].y<b[j].y)return true;
swap(i,j);
if(b[i].x<b[j].x&&b[j].x<b[i].y&&b[i].y<b[j].y)return true;
return false;
}
int main(){
clr(head,-);
cin>>n>>m;
int u,v;
for(int i=;i<=m;i++)
{
scanf("%d%d",&b[i].x,&b[i].y);
}
for(int i=;i<=m;i++)
{
for(int j=i+;j<=m;j++)
{
if(cal(i,j)){
addv(i<<,j<<|);
addv(i<<|,j<<);
}
}
}
if(Two_sat()){
printf("panda is telling the truth...\n");
}else{
puts("the evil panda is lying again");
}
}

poj3207 Ikki's Story IV - Panda's Trick 2-SAT的更多相关文章

  1. POJ3207 Ikki's Story IV – Panda's Trick

    Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 9426   Accepted: 3465 Description liym ...

  2. POJ3207 Ikki's Story IV - Panda's Trick 【2-sat】

    题目 liympanda, one of Ikki's friend, likes playing games with Ikki. Today after minesweeping with Ikk ...

  3. poj3207 Ikki’s Story IV – Panda’s Trick

    2-SAT. tarjan缩点.强连通分量的点要选一起选. #include<cstdio> #include<algorithm> #include<cstring&g ...

  4. POJ-3207 Ikki's Story IV - Panda's Trick 2sat

    题目链接:http://poj.org/problem?id=3207 题意:在一个圆圈上有n个点,现在用线把点两两连接起来,线只能在圈外或者圈内,现给出m个限制,第 i 个点和第 j 个点必须链接在 ...

  5. poj3207 Ikki's Story IV - Panda's Trick 2-sat问题

    ---题面--- 题意:给定一个圈,m条边(给定),边可以通过外面连,也可以通过里面连,问连完这m条边后,是否可以做到边两两不相交 题解: 将连里面和连外面分别当做一种决策(即每条边都是决策点), 如 ...

  6. 【POJ3207】Ikki's Story IV - Panda's Trick

    POJ 3207 Ikki's Story IV - Panda's Trick liympanda, one of Ikki's friend, likes playing games with I ...

  7. POJ 3207 Ikki's Story IV - Panda's Trick(2-sat问题)

    POJ 3207 Ikki's Story IV - Panda's Trick(2-sat问题) Description liympanda, one of Ikki's friend, likes ...

  8. POJ 3207 Ikki's Story IV - Panda's Trick

    Ikki's Story IV - Panda's Trick Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 7296   ...

  9. poj 3207 Ikki's Story IV - Panda's Trick (2-SAT)

    http://poj.org/problem?id=3207 Ikki's Story IV - Panda's Trick Time Limit: 1000MS   Memory Limit: 13 ...

随机推荐

  1. OSX 下 sftp 上传目录到服务器

    使用如下命令: put –r dir mput –r dir

  2. 微交互:App成功的秘诀

    以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 最好的产品拥有两个很棒的特点:功能和细节.产品的功能可成功吸引到人们的注意力,而产品的细节则可留住你 ...

  3. velocity在html中换行符转换

    <td colspan="3" class="tdContent2">$!obj.getDealInfo().replaceAll("\r ...

  4. 看图说说JVM老年代垃圾收集器

    注:G1垃圾收集器是目前最前沿的GC收集器,未来将取代CMS垃圾收集器,可以作为整个Heap的收集器使用,不限于老年代!!!

  5. Hello_Motion_Tracking 任务一:Project Tango采集运动追踪数据

    我们来看一下中的几个基本的例子 (区域描述.深度感知.运动追踪.视频4个) 参考:Google Tango初学者教程 1. hello_motion_tracking package com.proj ...

  6. 深海划水队项目---七天冲刺day1

    团队会议: 团队成员的任务认领安排: 张兆敏:登录界面,游戏界面(包含游戏区.控制区.显示信息区). 乐滔:方块的形状.移动(向左或者向右)旋转(顺时针或者逆时针),方块的下落(包含硬着陆和软着陆), ...

  7. 报表导出jxls的使用笔记

    基于poi的jxls工具的使用:1.依赖: <dependency> <groupId>org.jxls</groupId> <artifactId>j ...

  8. linux apache安装https证书

    1.首先查看是否安装apache 命令:rpm -qa|grep httpd 如果存在,卸载命令:rpm -e XXXX 如果不存在,安装命令:yum install httpd 安装完apache之 ...

  9. 打造一个简单实用的的TXT文本操作及日志框架

    首先先介绍一下这个项目,该项目实现了文本写入及读取,日志写入指定文件夹或默认文件夹,日志数量控制,单个日志大小控制,通过约定的参数让用户可以用更少的代码解决问题. 1.读取文本文件方法 使用:JIYU ...

  10. C#用 catch 捕获异类的常用类型

    C#用 catch 捕获异类的常用类型 最近在书上刚刚学到了try和catch用法,然后网上找了下常用的,自己存在这里方便自己查找 Exception 类  描述 SystemException 其他 ...