传送门:Problem 3207

https://www.cnblogs.com/violet-acmer/p/9769406.html

难点:

  题意理解。

题意:

  平面上有一个圆,圆上有n个点(分别编号0-n-1,按顺序在圆上排列),现在要对这n个点连接m条线,这m条线的两个端点已经给出了,这个线可以从圆内连或从圆外连,且任意一个点最多只作为一条线的端点.要求任意两条线不相交,问你是否可能?

  注意:两点间的连线没说一定是直线。

题解:

  两直线ab,cd(a < b , c < d)不可以同时在圆内或圆外的条件是 a<c<b<d || c<a<d<b

  以此构造布尔方程。

AC代码:

 #include<iostream>
#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;
#define pb push_back
#define mem(a,b) (memset(a,b,sizeof a))
const int maxn=+; int n,m;
int a[maxn],b[maxn];
int scc[*maxn];
bool vis[*maxn];
vector<int >vs;
vector<int >G[*maxn],rG[*maxn];
void addEdge(int u,int v)
{
G[u].pb(v);
rG[v].pb(u);
}
bool Touch(int a,int b,int c,int d)//判断 ab 是否一定与 cd 相交
{
if(a<c && c<b && b<d)
return true;
if(c<a && a<d && d<b)
return true;
return false;
}
void Dfs(int u)
{
vis[u]=true;
for(int i=;i < G[u].size();++i)
{
int to=G[u][i];
if(!vis[to])
Dfs(to);
}
vs.pb(u);
}
void rDfs(int u,int k)
{
vis[u]=true;
scc[u]=k;
for(int i=;i < rG[u].size();++i)
{
int to=rG[u][i];
if(!vis[to])
rDfs(to,k);
}
}
void SCC()
{
mem(vis,false);
vs.clear();
for(int i=;i <= *m;++i)
if(!vis[i])
Dfs(i);
mem(vis,false);
int k=;
for(int i=vs.size()-;i >= ;--i)
{
int to=vs[i];
if(!vis[to])
rDfs(to,++k);
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i <= m;++i)
{
scanf("%d%d",a+i,b+i);
if(a[i] > b[i])
swap(a[i],b[i]);
for(int j=;j < i;++j)
{
if(Touch(a[i],b[i],a[j],b[j]))
{
addEdge(j+m,i);
addEdge(i+m,j);
addEdge(j,i+m);
addEdge(i,j+m);
}
}
}
SCC();
bool flag=false;
for(int i=;i <= m;++i)
if(scc[i] == scc[i+m])
flag=true;
if(flag)
printf("the evil panda is lying again\n");
else
printf("panda is telling the truth...\n");
}

poj 3207(2-SAT+SCC)的更多相关文章

  1. POJ 3207 Ikki&#39;s Story IV - Panda&#39;s Trick (2-SAT)

    职务地址:id=3207">POJ 3207 找好矛盾关系.矛盾关系是(2,5)和(3,6)这两个仅仅能一个在外边,一个在里边.利用这个矛盾关系来建图. 能够用在外边和里边来当1和0, ...

  2. 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 ...

  3. 2-SAT的小总结(POJ 3683 POJ 3207)

    记住几个最重要的公式: xANDy=0<=>(x=>y′)AND(y=>x′) xANDy=1<=>(x′=>x)AND(y′=>y) xORy=0&l ...

  4. POJ 3207 Ikki&#39;s Story IV - Panda&#39;s Trick(2-sat)

    POJ 3207 Ikki's Story IV - Panda's Trick id=3207" target="_blank" style=""& ...

  5. Ikki's Story IV - Panda's Trick POJ - 3207(水2 - sat 在圈内 还是 在圈外)

    题意: 就是一个圈上有n个点,给出m对个点,这m对个点,每一对都有一条边,合理安排这些边在圈内或圈外,能否不相交 解析: 我手残 我手残 我手残 写一下情况 只能是一个在圈外 一个在圈内 即一个1一个 ...

  6. 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 ...

  7. Ikki&#39;s Story IV - Panda&#39;s Trick (poj 3207 2-SAT)

    Language: Default Ikki's Story IV - Panda's Trick Time Limit: 1000MS   Memory Limit: 131072K Total S ...

  8. [2-SAT] poj 3207 Ikki&#39;s Story IV - Panda&#39;s Trick

    题目链接: id=3207">http://poj.org/problem? id=3207 Ikki's Story IV - Panda's Trick Time Limit: 1 ...

  9. POJ 3207 【2-SAT入门题 + 强连通分量】

    这道题是我对于2-SAT问题的入门题:http://poj.org/problem?id=3207 一篇非常非常非常好的博客,很详细,认真看一遍差不多可以了解个大概:https://blog.csdn ...

随机推荐

  1. sigar开发(java)

    下载sigar,地址:https://yunpan.cn/cBEWbEfdAm98f (提取码:f765) 可以收集的信息 CPU信息:包括基本信息(vendor.model.mhz.cacheSiz ...

  2. Python-dict-12

    字典 Why:咱们目前已经学习到的容器型数据类型只有list,那么list够用?他有什么缺点呢? 1. 列表可以存储大量的数据类型,但是如果数据量大的话,他的查询速度比较慢. 2. 列表只能按照顺序存 ...

  3. Buy the Ticket HDU 1133

    传送门 [http://acm.hdu.edu.cn/showproblem.php?pid=1133] 题目描述和分析 代码 #include<iostream> #include< ...

  4. BUAAMOOC项目M2 postmortem

    设想和目标 1.我们的软件要解决什么问题?是否定义的很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件是基于北航MOOC网站做的Android手机客户端,用于便捷的在学校里通过手机做到随时随地 ...

  5. Linux实践四:ELF文件格式分析

    一.分析ELF文件头 二.通过文件头找到section header table,理解内容 三.通过section header table 找到各section 四.理解常见.text .strta ...

  6. PAT 1021 个位数统计

    https://pintia.cn/problem-sets/994805260223102976/problems/994805300404535296 给定一个k位整数N = d~k-1~*10^ ...

  7. Linux查询用户和组的命令

    root@PC-RENGUOQIANG:~# cat /etc/passwd root:x:::root:/root:/bin/bash daemon:x:::daemon:/usr/sbin:/us ...

  8. Get filename from URL using Javascript

    http://befused.com/javascript/get-filename-url Get filename from URL using Javascript   This snippet ...

  9. Spring中 @Autowired标签与 @Resource标签 的区别

    http://blog.csdn.net/angus_17/article/details/7543478 http://bbs.csdn.net/topics/390175654 https://w ...

  10. win10总是2分钟就自动睡眠怎么办 win10系统自动休眠bug怎么解决(转)

        解决方法如下: 1.右键点击开始图标,选择[运行],或者利用快捷键“win+R”打开运行窗口,win键是ctrl和alt键中间的徽标键: