据说原数据可以让复杂度不满的暴力O(Tn^2)过掉……O(Tn^2)方法类似于codeforces一场div2的E题

有一种比较好的方法:每次找出原图G中度最小的点加入q,然后将相邻的点加入新图G'。这显然能够得到一个最大的独立集。而p可以在维护度最小的点最大这一过程中,把G的所有点加入集合p。因为set带一个log,所以复杂度为O(Tmlogn)。

证明:满足(p+1)(q+1)>n即可。删除的q节点中d的度数和满足Σ(d[i]+1)=n,其中i∈q,然后max{d[i]}q>=n,于是(max{d[i]}+1)q>n,而p>=max{d[i]},所以命题成立。

#include<bits/stdc++.h>
using namespace std;
const int N=1e4+;
int n,m,n1,n2,len,deg[N],vis[N],s1[N],s2[N],b[N];
vector<int>G[N];
struct node{int u,d;}a[N];
bool operator<(node a,node b){return a.d==b.d?a.u<b.u:a.d<b.d;}
typedef set<node>::iterator iter;
set<node>S;
inline int read()
{
int x=,w=;
char ch=;
while(!isdigit(ch))w|=ch=='-',ch=getchar();
while(isdigit(ch))x=(x<<)+(x<<)+(ch^),ch=getchar();
return w?-x:x;
}
int main()
{
int T;scanf("%d",&T);
while(T--)
{
n=read(),m=read();
n1=n2=len=;
for(int i=;i<=n;i++)G[i].clear(),deg[i]=vis[i]=,a[i]=(node){i,};
for(int i=;i<=m;i++)
{
int x=read(),y=read();
G[x].push_back(y),G[y].push_back(x);
deg[x]++,deg[y]++,a[x].d++,a[y].d++;
}
for(int i=;i<=n;i++)S.insert(a[i]);
int mxd=-,mx=;
while(!S.empty())
{
int u=(*S.begin()).u;
if(deg[u]>mxd)mxd=deg[u],mx=len;
S.erase(S.begin());
b[++len]=u,s2[++n2]=u,vis[u]=;
for(int i=;i<G[u].size();i++)
{
int v=G[u][i];
iter it=S.find((node){v,deg[v]});
if(it==S.end())continue;
S.erase(it),b[++len]=v;
for(int j=;j<G[v].size();j++)
{
int t=G[v][j];
it=S.find((node){t,deg[t]});
if(it==S.end())continue;
S.erase(it),S.insert((node){t,--deg[t]});
}
}
}
for(int i=mx+;i<=len;i++)s1[++n1]=b[i];
printf("%d",n1);for(int i=;i<=n1;i++)printf(" %d",s1[i]);
printf("\n%d",n2);for(int i=;i<=n2;i++)printf(" %d",s2[i]);
puts("");
}
}

[SDOI2019]热闹又尴尬的聚会(图论+set+构造)的更多相关文章

  1. [SDOI2019]热闹又尴尬的聚会 构造,贪心

    [SDOI2019]热闹又尴尬的聚会 链接 luogu loj 思路 第一问贪心?的从小到大删除入度最小的点,入度是动态的,打个标记. 当然不是最大独立集. 第二问第一问的顺序选独立集,不行就不要.选 ...

  2. SDOI2019热闹又尴尬的聚会

    P5361 [SDOI2019]热闹又尴尬的聚会 出题人用脚造数据系列 只要将\(p\)最大的只求出来,\(q\)直接随便rand就能过 真的是 我们说说怎么求最大的\(p\),这个玩意具有很明显的单 ...

  3. 【题解】Luogu P5361 [SDOI2019]热闹又尴尬的聚会

    原题传送门 构造题. 明显p,q都越大越好 我们考虑每次取出度最小的点,加到尴尬聚会的集合中(因为把与它相邻的点全删了,不珂能出现认识的情况),把它自己和与自己相连的点从图上删掉(边也删掉),记下这个 ...

  4. [SDOI2019] 热闹又尴尬的聚会

    热闹度\(p\)子图中最小的度数,尴尬度\(q\)独立集大小,之间的约束 \[ \begin{aligned} \lfloor n/(p+1)\rfloor\le q &\rightarrow ...

  5. [洛谷P5361][SDOI2019]热闹又尴尬的聚会:构造题

    分析 构造方法 (截图自UOJ群) 可以使用std::set维护这个过程,不过据说可以做到\(O(n+m)\).. 正确性证明 题目中的要求等价于\((p+1)(q+1) > n\) 设每次找出 ...

  6. vijos2054 SDOI2019 热闹的聚会与尴尬的聚会

    题目链接 思路 首先观察题目最后的式子\(\lfloor \frac{n}{p + 1} \rfloor \le q\) 并且\(\lfloor \frac{n}{q+1} \rfloor \le p ...

  7. [luogu5361]热闹的聚会与尴尬的聚会

    由于两者是独立的,我们希望两者的$p$和$q$都最大 考虑最大的$p$,先全部邀请,此时要增大$p$显然必须要删去当前度数最小的点,不断删除之后将每一次度数最小值对答案取max即可 对于$q$也即最大 ...

  8. Luogu3524 POI2011 Party 图论、构造

    题目传送门:https://www.luogu.org/problemnew/show/P3524 大意:给一个$N$个点的图,其中一定有一个大小为$\frac{2}{3}N$的团,程序需给出一个大小 ...

  9. Gym - 101503I 利用到图论的构造

    比赛的时候没有注意到 给出的up矩阵 能使我们随便选一列 确定这一列的rank 这样我们得出每一行列的rank 进行构图 大->小 然后从大到小放 当前放的点 和他有因果关系并且比他大的点必须已 ...

随机推荐

  1. Caused by: com.mysql.cj.exceptions.DataReadException: Zero date value prohibited

    原因:数据库日期出现零值,即0000-00-00 属于一个无效日期. 解决方案:重新赋值,或者在jdbc链接后加参数zeroDateTimeBehavior=convertToNull

  2. Java 14 都要来了,为什么还有这么多人固守Java8?

    作者:刘欣 从Java 9开始,Java版本的发布就让人眼花缭乱了. 每隔6个月,都会冒出一个新版本出来,Java 10 , Java 11, Java 12, Java 13, 到2020年3月份, ...

  3. spring装配bean的三种方式及其混合装配

    在spring容器中装配bean有三种基本方式和混合装配方式: 隐式的bean自动发现机制和自动装配 在java中进行显式配置 在xml中配置 混合装配(在多个java文件中配置.在JavaConfi ...

  4. Tensorflow学习教程------Fetch and Feed

    #coding:utf-8 import tensorflow as tf #Fetch input1 = tf.constant(3.0) input2 = tf.constant(1.0) inp ...

  5. DLL对应的导入库一定会生成的

    测试代码: #pragma once #define TESTDEPEND_EXPORTS #ifdef TESTDEPEND_EXPORTS #define TESTDEPEND_API __dec ...

  6. ubuntu 18.04 安装 Redis-server

    Redis 安装 Redis是一款内存键值存储,以其灵活性,性能和广泛的语言支持而闻名.本教程将演示如何在Ubuntu 18.04服务器上安装和配置Redis.主要内容包括: 安装 Redis Red ...

  7. PAT Advanced 1099 Build A Binary Search Tree (30) [⼆叉查找树BST]

    题目 A Binary Search Tree (BST) is recursively defined as a binary tree which has the following proper ...

  8. VMware DRS部分知识点

    主机添加到集群中,不需要维护模式(有虚拟机开机状态时也可以添加进去). 主机从集群中移除,需要主机进入维护模式. HA和DRS 全自动 当设置虚拟机必须在主机上时 DRS优先级大于HA 就算主机挂了H ...

  9. Webstorm、Idea双击shift弹出框解决办法

    1.Ctrl + Shift + A,输入registry 2.在弹出的记录表中,向下滚动到**“ide.suppress.double.click.handler”**并选中复选框,然后close关 ...

  10. IPC---有名管道FIFO

    一.参考网址 1.Linux学习之——FIFO实例