[POJ3207]Ikki's Story IV - Panda's Trick(2-SAT)

2023-11-11 01:30
文章标签 trick iv panda sat story ikki poj3207

本文主要是介绍[POJ3207]Ikki's Story IV - Panda's Trick(2-SAT),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目大意:
圆上顺序排列n个点,现要在一些点间连边,边只能在圆内或圆外,求有没有可能不相交

学习了2-SAT!
参考资料如下:
1、神犇写的巨无敌详细的博客
2、我觉得很好看的懂的论文

好的那么我来捋一捋2-SAT的思路,首先对于一个选择进行拆点分成选和不选,对于约束关系,如果选了a不能选b的话,那就a向b的对称点连边。建图之后强联通缩点,如果有一对对称点在同一个连通分量那就说明无解。如果需要输出解那就进行拓扑排序之后染色,可以理解为走一遍进行选择。

对于这道题,我们通过画图可以发现:如果两条线在圆内有交点,那么他们在圆外也一定有交点。
这里写图片描述

所以我们只需要判断在两条边在圆内是否有交点代入2-SAT模型求解(通过端点判断即可)

#include<iostream>
#include<cstring>
using namespace std;
const int N=2010;
const int M=600010;
struct OrzAKC
{int x,y;
} a[M];
struct AKCqhzdy
{int x,y,next;
} b[M];
int n,m,len,top,idx,cnt;
int last[N],dfn[N],low[N],belong[N],sta[N];
bool instack[N];
void ins(int x,int y)
{b[len].x=x;b[len].y=y;b[len].next=last[x];last[x]=len++;
}
void tarjan(int x)
{int u;dfn[x]=low[x]=++idx;instack[x]=true;sta[++top]=x;for (int i=last[x]; i!=-1; i=b[i].next){int y=b[i].y;if (!dfn[y]) {tarjan(y);if (low[x]>low[y])low[x]=low[y];} else if (instack[y]&&low[x]>dfn[y])low[x]=dfn[y];}if(low[x]==dfn[x]){cnt++;do {u=sta[top--];instack[u]=false;belong[u]=cnt;} while (x!=u);}
}
void getmap()
{int i,j;memset(last,-1,sizeof(last));memset(dfn,0,sizeof(dfn));memset(low,0,sizeof(low));memset(belong,-1,sizeof(belong));memset(instack,false,sizeof(instack));len=0;top=0;cnt=top=idx=0;for (i=0; i<m; i++){scanf("%d%d",&a[i].x,&a[i].y);if(a[i].x>a[i].y){int t=a[i].x;a[i].x=a[i].y;a[i].y=t;}}for (i=0;i<m-1;i++)for (j=i+1;j<m;j++)if (a[i].x>a[j].x&&a[i].y>a[j].y&&a[j].y>a[i].x||a[i].x<a[j].x&&a[i].y<a[j].y&&a[i].y>a[j].x){ins(2*i,2*j+1);ins(2*j+1,2*i);ins(2*j,2*i+1);ins(2*i+1,2*j);}}
bool solve()
{for (int i=0;i<2*m;i++)if(!dfn[i])tarjan(i);for (int i=0;i<m;i++)if(belong[2*i]==belong[2*i+1])return false;return true;
}
int main()
{while (scanf("%d%d",&n,&m)!=EOF){getmap();if (solve()) printf("panda is telling the truth...\n");else printf("the evil panda is lying again\n");}
}

这篇关于[POJ3207]Ikki's Story IV - Panda's Trick(2-SAT)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/386640

相关文章

【python因果推断库7】使用 pymc 模型的工具变量建模 (IV)2

目录 与普通最小二乘法 (OLS) 的比较 应用理论:政治制度与GDP 拟合模型:贝叶斯方法  多变量结果和相关性度量 结论 与普通最小二乘法 (OLS) 的比较 simple_ols_reg = sk_lin_reg().fit(X.reshape(-1, 1), y)print("Intercept:", simple_ols_reg.intercept_, "Bet

【python因果推断库6】使用 pymc 模型的工具变量建模 (IV)1

目录 使用 pymc 模型的工具变量建模 (IV) 使用 pymc 模型的工具变量建模 (IV) 这份笔记展示了一个使用工具变量模型(Instrumental Variable, IV)的例子。我们将会遵循 Acemoglu, Johnson 和 Robinson (2001) 的一个案例研究,该研究尝试解开强大的政治机构对于以国内生产总值(GDP)衡量的经济生产力的影响。本示例借鉴

iOS CoreAudio学习笔记(二)—— The Story of Sound

在上一章,我们初次尝试了CoreAudio API:它提供了什么以及怎样调用它的函数。现在是时候往回一步来看看一张更大的图:一开始CoreAudio访问的问题。 这一章将介绍基础的声音科学,它是什么,它怎样工作。事实证明,计算机的数字化天性使它们并不那么适合处理连续的模拟信号。这引导了对信号采样的思想,或者将平滑的声波斩为频率足够大的离散值,而人耳无法注意到差别。这一章覆盖了这些采样在数字化形态

【LLM】文生视频相关开源数据集(VidGen、Panda、Cogvideox等)

note 总结了VidGen数据集、Panda-70m数据集、Openvid数据集、OpenVid-1M数据集、Cogvideox训练数据准备过程、ShareGPT4Video数据集等在一篇综述中还总结了评估指标包括:峰值信噪比(PSNR)、结构相似性指数(SSIM)、Inception 分数(IS)、Fréchet Inception 距离(FID)、CLIP 分数、视频 Inception

网络层 IV(ARP、DHCP、ICMP)【★★★★★★】

(★★)代表非常重要的知识点,(★)代表重要的知识点。 一、地址解析协议(ARP)(★★) 在局域网中,由于硬件地址已固化在网卡上的 ROM 中,因此常常将硬件地址称为物理地址。因为在局域网的 MAC 帧中的源地址和目的地址都是硬件地址,因此硬件地址又称为 MAC 地址。即物理地址、硬件地址和 MAC 地址常常作为同义词出现。 1. IP 地址与 MAC 地址 从层次的角度看,

新SAT官方范文得分的分段分析

· 本次官方给出了两道写作新样题,样题的材料文章分别是节选自Paul Bogard于2012.12.21发表在《洛杉矶时报》的“Let There Be Dark.”及Dana Gioia于2005.04.10发表在《纽约时报》的“Why Literature Matters” 。   · 张卉老师结合之前的新SAT改革的说明,认为写作部分的基本出题思路没有大的调整,样题的材料文章都是节选自

SAT改革:SAT官方最新样题解读与备考建议

College Board于2015年1月9日释放新SAT考试最新样题,小编第一时间为各位考生及家长进行新SAT考试的样题解析及备考规划建议,此次小编给出了SAT语法样题一、样题二,阅读第一、二篇,数学,写作样题与范文的详细解读,希望各位考生在2015冲刺高分成绩! 新SAT科目官方样题答案解析新SAT语法新SAT写作与语法能力真题及答案样题1解析 | 样题2解析 | 新SAT语法备考建议新

SAT阅读考试的典型问题及应对策略

SAT阅读部分的测试时间为70分钟,共65道选择题,每道选择题有五项选择,其中只有一项选择为正确答案。结合所阅读的文章,每道选择题以提出问题的形式出现,通常被问到的问题类型为:本篇文章的主要观点及中心主题;在本篇文章中,作者对所论述问题的态度及基本观点;判断所阅读文章的体裁形式,例如:议论、寓言、科技、历史、讽刺、悲剧、喜剧、浪漫、科幻、恐怖、写实及诗歌;作者在文章中所用的修辞手法的目的,在这

如何克服SAT考试阅读难关?

对中国考生而言,SAT阅读部分的考题为最难。SAT阅读由两部分组成,即阅读判断及句子填空,全部为选择题型。SAT阅读的考试时间为70分钟,65道题,每答对一道题得12.3分,总共800分。国内考生若想在SAT阅读中取得理想的成绩,至少要具备两项基本能力,其一,要掌握一万左右的英语词汇量;其二,要有能力根据上下文的关系,准确识别不认识的英语词汇。SAT阅读部分题量大、时间紧,考生要在不超过一分钟

四步走循序渐进克服SAT阅读关

五月份的SAT考试刚刚结束,阅读自然是各个部分中最有难度的,也是最令同学们望而生畏的。但相较于几个月前,同学们纷纷表示,在经过了系统而全面的训练和练习之后,还是可以打倒阅读这一SAT高分路上拦路虎的。 事实上,只要过了四个关卡,同学们就可彻底解决SAT阅读。   第一关:单词关   要读懂一篇文章,无疑最基本的一点是要认识这篇文章的字。如果入目皆是生词,一定会有一种“满纸荒唐言”的感觉――