正解: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

最新文章

  1. Linux实现https方式访问站点
  2. BigDecimal
  3. Elasticsearch 文件目录解释
  4. 【Android开发坑系列】之经常被忽略的背景图片内存泄露
  5. 初识lua
  6. A股市场各行业龙头股一览表
  7. [zz]Java中的instanceof关键字
  8. 关于解决 Failed to prepare partial IU:
  9. C# 使用AutoResetEvent进行线程同步
  10. [UVA315]Network(tarjan, 求割点)
  11. github/hexo搭建个人博客几个问题总结
  12. SDL_Test库(1)——SDL不用TTF库绘制文字
  13. lightoj 1011 (状态压缩dp)
  14. 修改html很实用的insertAdjacentHTML方法
  15. [SOJ]Easy sort (归并排序)
  16. English - Green Peanut Butter
  17. 我实在不懂Python的Asyncio
  18. IDEA+控制台使用搜索\查找功能
  19. 完整的SOPC开发流程体验
  20. 【Java基础】12、java中方法的参数传递机制

热门文章

  1. Explaining Delegates in C# - Part 2 (Events 1)
  2. javascript使用jQuery加载CSV文件+ajax关闭异步
  3. VS2017编译Poco1.9.0的64版本
  4. WP8.1学习系列(第七章)——应用选项卡Pivot交互UX
  5. Material Design系列第五篇——Working with Drawables
  6. jQuery事件处理(五)
  7. axure rp ----专业的快速原型设计工具
  8. Android 本地tomcat服务器接收处理手机上传的数据之环境搭建
  9. git 推送出现 &quot;fatal: The remote end hung up unexpectedly&quot;
  10. [Offer收割]编程练习赛15 A.偶像的条件[贪心]