正解:2-sat(并茶几/强连通分量

解题报告:

传送门w

难受死了,连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的更多相关文章

  1. 「区间DP」「洛谷P3205」「 [HNOI2010]」合唱队

    洛谷P3205 [HNOI2010]合唱队 题目: 题目描述 为了在即将到来的晚会上有更好的演出效果,作为 A 合唱队负责人的小 A 需要将合唱队的人根据他们的身高排出一个队形.假定合唱队一共 n 个 ...

  2. 洛谷 P3209 [HNOI2010] 平面图判定

    链接: P3209 题意: 给出 \(T\) 张无向图 \((T\leq100)\),并给出它对应的哈密顿回路,判断每张图是否是平面图. 分析: 平面图判定问题貌似是有线性做法的,这里给出链接,不是本 ...

  3. 洛谷P3209 [HNOI2010]平面图判定(2-SAT)

    传送门 看到哈密顿回路就被吓傻了……结果没有好好考虑性质…… 首先,平面图有个性质:边数小于等于$3n-6$(我也不知道为啥),边数大于这个的直接pass 然后考虑原图,先把哈密顿回路单独摘出来,就是 ...

  4. 洛谷P3209 [HNOI2010]PLANAR(2-SAT)

    题目描述 若能将无向图G=(V,E)画在平面上使得任意两条无重合顶点的边不相交,则称G是平面图.判定一个图是否为平面图的问题是图论中的一个重要问题.现在假设你要判定的是一类特殊的图,图中存在一个包含所 ...

  5. 洛谷P3209 [HNOI2010]PLANAR

    首先用一波神奇的操作,平面图边数m<=3*n-6,直接把m降到n, 然后对于冲突的边一条环内,一条环外,可以用并查集或者2Sat做, 当然并查集是无向的,2Sat是有向的,显然用并查集比较好 复 ...

  6. 题解 洛谷P3203/BZOJ2002【[HNOI2010]弹飞绵羊】

    裸的LCT,关键是要怎么连边,怎么将这种弹飞关系转化成连边就行了. 那么我们可以这样连边: 一个节点i的爸爸就是i+ki. 没有i+ki那么就被弹飞了,即\(i\)的爸爸是虚拟节点n+1. 那么怎么求 ...

  7. 洛谷 P3203 BZOJ 2002 [Hnoi2010]Bounce 弹飞绵羊

    题目描述 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系 ...

  8. P3209 [HNOI2010]平面图判定

    P3209 [HNOI2010]平面图判定 哈密尔顿环之外的任意一条边,要么连在环内部,要么连在环外部 判断两条边在同一部分会相交,则这两条边必须分开 那么把边看作点连边,跑二分图染色就行 #incl ...

  9. Luogu P3209 [HNOI2010]平面图判定(2-SAT)

    P3209 [HNOI2010]平面图判定 题意 题目描述 若能将无向图\(G=(V,E)\)画在平面上使得任意两条无重合顶点的边不相交,则称\(G\)是平面图.判定一个图是否为平面图的问题是图论中的 ...

随机推荐

  1. Linux下的/proc目录介绍

    proc被称为虚拟文件系统,它是一个控制中心,可以通过更改其中某些文件改变内核运行状态, 它也是内核提空给我们的查询中心,用户可以通过它查看系统硬件及当前运行的进程信息. Linux中许多工具的数据来 ...

  2. System.Web.Mvc.AJAX缺少程序集引用

    今天在构建新项目的时候,出现这个错误,实际上这个出现过很多次了,但是每次都忘记之前怎么解决的,之前博客也不记得写过没有...

  3. 浅析TCP字节流与UDP数据报的区别

    转自http://www.linuxidc.com/Linux/2014-11/109545.htm “TCP是一种流模式的协议,UDP是一种数据报模式的协议”,这句话相信大家对这句话已经耳熟能详~但 ...

  4. SQL 查询结果保存为 临时表

    -- 1. 在使用select into前,可以先做一下判断 if OBJECT_ID('tempdb..#TT')is not NULL drop table #TT -- 2. 查询结果保存为临时 ...

  5. 0R的电阻以及NC的意义

    0欧电阻的作用: 0欧的电阻大概有以下几个功能:①做为跳线使用.这样既美观,安装也方便.②在数字和模拟等混合电路中,往往要求两个地分开,并且单点连接.我们可以用一个0欧的电阻来连接这两个地,而不是直接 ...

  6. Python Tkinter Entry(文本框)

    Python学习记录--关于Tkinter Entry(文本框)的选项.方法说明,以及一些示例. 属性(Options) background(bg) borderwidth(bd) cursor e ...

  7. laravel with 渴求式加载指定字段

    在使用 Laravel 的关联查询中,我们经常使用 with 方法来避免 N+1 查询,但是 with 会将目标关联的所有字段全部查询出来,对于有强迫症的我们来说,当然是不允许的. 这时候我们可以使用 ...

  8. WORD Application.Documents.Open函数返回null的一种解决方法

    DCOM Config Setting for "Microsoft Office Word 97 - 2003 Document" 内部配置一切正常,但调用Application ...

  9. reserve和resize区别

    reserve是容器预留空间,但在空间内不真正创建元素对象,所以在没有添加新的对象之前,不能引用容器内的元素.加入新的元素时,要调用push_back()/insert()函数. resize是改变容 ...

  10. 使用JSP的fmt标签实现国际化支持

    使用JSP的fmt标签配置i18n国际化资源文件可以实现根据不同的地区和语言切换不同的显示. 具体做法如下: 1.在JSP页面中添加fmt标签的引用: <%@ taglib prefix=&qu ...