洛谷P3209平面图判定 [HNOI2010] 2-sat
正解:2-sat(并茶几/强连通分量
解题报告:
难受死了,连WA5次,正确率又-=INF了QAQ
然后先说下这题怎么做再来吐槽自己QAQ
首先这题其实和NOIp2010的关押罪犯挺像的,然后其实感觉代码实现也差不蛮多?不过评级还是差挺多的来着qwq主要可能是这题的思想比较难想到趴
首先看下题目,就是港有个无向图,然后问你能否做到任意两边不交叉
然后这题有个很良心的地方就在于它给了个哈密顿回路(也就是个经过所有边的环)
这样的话就还是比较好做了鸭qwq
首先把这个离散化一下,按照哈密顿回路中的点的次序离散化(ummm这个大概意会一下?不会说但是比较显然趴qwq)
然后就变成了所有有交叉的边不能在同一边
然后就是个2-sat裸题了呢
然后2-sat的话我心血来潮想着那就写个新的博客好了?好那就放下链接
啊呀有个,很重要的事儿我忘了说了,,,
就是这题时间复杂度显然是要m2的,按照m的范围显然是要超时的
但是关于平面图有个很特殊的性质,就是,如果边的数量大于3*点数-6,就必然不是平面图了
然后通过这个就可以降到n2就欧克了
over
然后关于平面图似乎还有些性质啥的然后关于这个性质的证明似乎在百度上都搜得到?我也懒得做证明啥的了QAQ就先这样趴QAQ
然后放个代码,over!
#include<bits/stdc++.h> using namespace std; #define ll long long #define rp(i,x,y) for(register ll i=x;i<=y;++i) #define my(i,x,y) for(register ll i=y;i>=x;--i) +; ll n,m,fa[N<<],ys[N],cnt; ]; bool flg; inline ll read() { ;; '))ch=getchar(); ; )+(x<<)+(ch^'),ch=getchar(); return y?x:-x; } ll fd(ll x){if(fa[x]==x)return x;return fa[x]=fd(fa[x]);} inline bool cmp(ed x,ed y){return x.from<y.from;} inline void pre() { n=read(),m=read(); rp(i,,m)edge[++cnt].from=read(),edge[cnt].to=read(); rp(i,,n)ys[read()]=i; -){printf(;return;} rp(i,,m){edge[i].from=ys[edge[i].from],edge[i].to=ys[edge[i].to];if(edge[i].to<edge[i].from)swap(edge[i].to,edge[i].from);} rp(i,,m<<)fa[i]=i; sort(edge+,edge++cnt,cmp); } inline void work() { rp(i,,m) my(j,,i-) if(edge[j].from<edge[i].from && edge[j].to>edge[i].from && edge[i].to>edge[j].to) { fa[fd(j)]=fd(i+m); fa[fd(i)]=fd(j+m); if(fd(i)==fd(i+m) || fd(j)==fd(j+m)){printf("NO\n");return;} } printf("YES\n"); } int main() { ll T=read(); ;pre();if(!flg)work();} ; }
布星我一定要说下我错哪儿了QAQ
就是我十分傻逼的在读入的时候用的是edge[cnt++],更傻逼的是我cnt忘记清0了
然后查了两天:D
我很好我没有委屈QAQ
洛谷P3209平面图判定 [HNOI2010] 2-sat的更多相关文章
- 「区间DP」「洛谷P3205」「 [HNOI2010]」合唱队
洛谷P3205 [HNOI2010]合唱队 题目: 题目描述 为了在即将到来的晚会上有更好的演出效果,作为 A 合唱队负责人的小 A 需要将合唱队的人根据他们的身高排出一个队形.假定合唱队一共 n 个 ...
- 洛谷 P3209 [HNOI2010] 平面图判定
链接: P3209 题意: 给出 \(T\) 张无向图 \((T\leq100)\),并给出它对应的哈密顿回路,判断每张图是否是平面图. 分析: 平面图判定问题貌似是有线性做法的,这里给出链接,不是本 ...
- 洛谷P3209 [HNOI2010]平面图判定(2-SAT)
传送门 看到哈密顿回路就被吓傻了……结果没有好好考虑性质…… 首先,平面图有个性质:边数小于等于$3n-6$(我也不知道为啥),边数大于这个的直接pass 然后考虑原图,先把哈密顿回路单独摘出来,就是 ...
- 洛谷P3209 [HNOI2010]PLANAR(2-SAT)
题目描述 若能将无向图G=(V,E)画在平面上使得任意两条无重合顶点的边不相交,则称G是平面图.判定一个图是否为平面图的问题是图论中的一个重要问题.现在假设你要判定的是一类特殊的图,图中存在一个包含所 ...
- 洛谷P3209 [HNOI2010]PLANAR
首先用一波神奇的操作,平面图边数m<=3*n-6,直接把m降到n, 然后对于冲突的边一条环内,一条环外,可以用并查集或者2Sat做, 当然并查集是无向的,2Sat是有向的,显然用并查集比较好 复 ...
- 题解 洛谷P3203/BZOJ2002【[HNOI2010]弹飞绵羊】
裸的LCT,关键是要怎么连边,怎么将这种弹飞关系转化成连边就行了. 那么我们可以这样连边: 一个节点i的爸爸就是i+ki. 没有i+ki那么就被弹飞了,即\(i\)的爸爸是虚拟节点n+1. 那么怎么求 ...
- 洛谷 P3203 BZOJ 2002 [Hnoi2010]Bounce 弹飞绵羊
题目描述 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系 ...
- P3209 [HNOI2010]平面图判定
P3209 [HNOI2010]平面图判定 哈密尔顿环之外的任意一条边,要么连在环内部,要么连在环外部 判断两条边在同一部分会相交,则这两条边必须分开 那么把边看作点连边,跑二分图染色就行 #incl ...
- Luogu P3209 [HNOI2010]平面图判定(2-SAT)
P3209 [HNOI2010]平面图判定 题意 题目描述 若能将无向图\(G=(V,E)\)画在平面上使得任意两条无重合顶点的边不相交,则称\(G\)是平面图.判定一个图是否为平面图的问题是图论中的 ...
随机推荐
- Redis 操作列表数据
Redis 操作列表数据: > lpush list1 "aaa" // lpush 用于追加列表元素,默认追加到列表的最左侧(left) (integer) > lp ...
- Kafka与Flink集成
Apache Flink是新一代的分布式流式数据处理框架,它统一的处理引擎既可以处理批数据(batch data)也可以处理流式数据(streaming data).在实际场景中,Flink利用Apa ...
- Python Subprocess Popen 管道阻塞问题分析解决
http://ju.outofmemory.cn/entry/279026 场景:1>不断播放mp3文件: 2>使用订阅发布模式保持tcp长连接,从服务器接收信息 造成程序hang死,但是 ...
- UITableView+FDTemplateLayoutCell源码学习笔记
本文转载至 http://www.cocoachina.com/bbs/read.php?tid=299773 基本原理是通过缓存每个cell的高度,当tableview回调delegate的hei ...
- Hadoop学习笔记(1):WordCount程序的实现与总结
开篇语: 这几天开始学习Hadoop,花费了整整一天终于把伪分布式给搭好了,激动之情无法言表······ 搭好环境之后,按着书本的代码,实现了这个被誉为Hadoop中的HelloWorld的程序--W ...
- AndroidのTextView之CompoundDrawable那些坑
TextView有几个属性android:drawableXXX,通常是在环绕文字周边显示一个图像,但是这有个坑就是文字和图片可能会对不齐. 纵使你设置gravity还是layout_gravity= ...
- 【PHP】 php 解析 base64图片上传
base64 图片编码格式: 类似如下 data:image/JPG;base64,/9j/4S/+RXhpZgAATU0AKgAAAAgACwEPAAIAAAAG php 解析代码如下: 基于tp ...
- [Error: Failed to find 'ANDROID_HOME' environment variable. Try setting setting it manually
7down voteaccepted I don't think its necessary to add everything into path.Just add the JAVA_HOME , ...
- 中国标准时间、‘yyyy-MM-dd’格式时间转为时间戳
中国标准时间转为时间戳 let _time="Tue Mar 20 2018 00:00:00 GMT+0800 (中国标准时间)"; console.log(Date.parse ...
- nginx命令行参数和信号
nginx命令行参数 [user@host dir]$ /usr/local/nginx/sbin/nginx -hnginx version: nginx/1.8.0Usage: nginx [-? ...