洛谷P3209平面图判定 [HNOI2010] 2-sat】的更多相关文章

正解:2-sat(并茶几/强连通分量 解题报告: 传送门w 难受死了,连WA5次,正确率又-=INF了QAQ 然后先说下这题怎么做再来吐槽自己QAQ 首先这题其实和NOIp2010的关押罪犯挺像的,然后其实感觉代码实现也差不蛮多?不过评级还是差挺多的来着qwq主要可能是这题的思想比较难想到趴 首先看下题目,就是港有个无向图,然后问你能否做到任意两边不交叉 然后这题有个很良心的地方就在于它给了个哈密顿回路(也就是个经过所有边的环) 这样的话就还是比较好做了鸭qwq 首先把这个离散化一下,按照哈密顿…
洛谷P3205 [HNOI2010]合唱队 题目: 题目描述 为了在即将到来的晚会上有更好的演出效果,作为 A 合唱队负责人的小 A 需要将合唱队的人根据他们的身高排出一个队形.假定合唱队一共 n 个人,第 i 个人的身高为 hi​ 米(1000≤hi≤2000),并已知任何两个人的身高都不同.假定最终排出的队形是 A 个人站成一排,为了简化问题,小 A 想出了如下排队的方式:他让所有的人先按任意顺序站成一个初始队形,然后从左到右按以下原则依次将每个人插入最终棑排出的队形中: 第一个人直接插入空…
链接: P3209 题意: 给出 \(T\) 张无向图 \((T\leq100)\),并给出它对应的哈密顿回路,判断每张图是否是平面图. 分析: 平面图判定问题貌似是有线性做法的,这里给出链接,不是本题解重点. 在想不到上述算法的情况下,我们发现题目给出了该图的哈密顿回路,所以我们把无向图按哈密顿回路排成一个环.此时不在环上的边之间才可能出现交叉,所以我们考虑暴力 \(O(m^2)\) 枚举,对于可能产生交叉的两条边,只有他们在环的两侧时才不会相交,所以当 \(a,b\) 两条边可能相交时, \…
传送门 看到哈密顿回路就被吓傻了……结果没有好好考虑性质…… 首先,平面图有个性质:边数小于等于$3n-6$(我也不知道为啥),边数大于这个的直接pass 然后考虑原图,先把哈密顿回路单独摘出来,就是一个环.对于每一条不在哈密顿回路上的边,有两种可能,一种是在环内,一种是在环外 我们用点来表示每一条边,把每一个点拆成两个分别表示这条边是在环内还是环外.对于两条边$i,j$,如果他们同时在环外或环内会交叉,那么就相当于有了约束条件,转化成一个2-SAT问题即可 至于连边,我们设$i$表示在环内,$…
题目描述 若能将无向图G=(V,E)画在平面上使得任意两条无重合顶点的边不相交,则称G是平面图.判定一个图是否为平面图的问题是图论中的一个重要问题.现在假设你要判定的是一类特殊的图,图中存在一个包含所有顶点的环,即存在哈密顿回路. 输入输出格式 输入格式: 输入文件的第一行是一个正整数T,表示数据组数(每组数据描述一个需要判定的图).接下来从输入文件第二行开始有T组数据,每组数据的第一行是用空格隔开的两个正整数N和M,分别表示对应图的顶点数和边数.紧接着的M行,每行是用空格隔开的两个正整数u和v…
首先用一波神奇的操作,平面图边数m<=3*n-6,直接把m降到n, 然后对于冲突的边一条环内,一条环外,可以用并查集或者2Sat做, 当然并查集是无向的,2Sat是有向的,显然用并查集比较好 复杂度大概是O(T*n*n) #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> #define pb push_back #define pii pair<int…
裸的LCT,关键是要怎么连边,怎么将这种弹飞关系转化成连边就行了. 那么我们可以这样连边: 一个节点i的爸爸就是i+ki. 没有i+ki那么就被弹飞了,即\(i\)的爸爸是虚拟节点n+1. 那么怎么求次数呢? i的深度就是次数 对于求深度,我们可以先将x弄成root,然后通过Access(n+1)将n+1号节点和x节点丢到一个Splay里面,维护一个size,每次询问的answer就是已经Splay到根的n+1号节点的size了. Code: #include<bits/stdc++.h> #…
题目描述 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系数ki,当绵羊达到第i个装置时,它会往后弹ki步,达到第i+ki个装置,若不存在第i+ki个装置,则绵羊被弹飞.绵羊想知道当它从第i个装置起步时,被弹几次后会被弹飞.为了使得游戏更有趣,Lostmonkey可以修改某个弹力装置的弹力系数,任何时候弹力系数均为正整数. 输入输出格式 输入格式: 第一行…
P3209 [HNOI2010]平面图判定 哈密尔顿环之外的任意一条边,要么连在环内部,要么连在环外部 判断两条边在同一部分会相交,则这两条边必须分开 那么把边看作点连边,跑二分图染色就行 #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> using namespace std; typedef long long LL; const LL maxn=50000…
P3209 [HNOI2010]平面图判定 题意 题目描述 若能将无向图\(G=(V,E)\)画在平面上使得任意两条无重合顶点的边不相交,则称\(G\)是平面图.判定一个图是否为平面图的问题是图论中的一个重要问题.现在假设你要判定的是一类特殊的图,图中存在一个包含所有顶点的环,即存在哈密顿回路. 输入输出格式 输入格式: 输入文件的第一行是一个正整数\(T\),表示数据组数 (每组数据描述一个需要判定的图).接下来从输入文件第二行开始有\(T\)组数据,每组数据的第一行是用空格隔开的两个正整数\…