[SDOI2019]热闹又尴尬的聚会 构造,贪心
[SDOI2019]热闹又尴尬的聚会
链接
思路
第一问贪心?的从小到大删除入度最小的点,入度是动态的,打个标记。
当然不是最大独立集。
第二问第一问的顺序选独立集,不行就不要。选出来的一定是满足不等式的。
每次最多删除p+1个,独立集个数是\(\lceil \frac{n}{p+1} \rceil >= \lfloor \frac{n}{p+1} \rfloor\)
代码
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 7;
int read() {
int x = 0, f = 1; char s = getchar();
for (;s > '9' || s < '0'; s = getchar()) if (s == '-') f = -1;
for (;s >= '0' && s <= '9'; s = getchar()) x = x * 10 + s - '0';
return x * f;
}
int n, m, ru[N];
vector<int> G[N];
vector<pair<int, int> > nb;
int ans1[N], vis[N];
struct edge{
int val, id;
edge(int x = 0, int y = 0) {val = x, id = y;}
};
bool operator < (edge a, edge b) {return a.val > b.val;}
priority_queue<edge> q;
void solve() {
for (int i = 1; i <= n; ++i) q.push(edge(ru[i], i));
int mx = 0;
while (!q.empty()) {
edge now = q.top();
q.pop();
if (now.val != ru[now.id]) continue;
// printf("ru[%d]=%d\n",now.id,ru[now.id]);
mx = max(mx, ru[now.id]);
ans1[now.id] = mx;
vis[now.id] = 1;
for (auto v : G[now.id]) {
if (vis[v]) vis[now.id] = 0;
if (!ans1[v]) q.push(edge(--ru[v],v));
}
}
int js = 0;
for (int i = 1; i <= n; ++i) if (ans1[i] == mx) ++js;
printf("%d ", js);
for (int i = 1; i <= n; ++i) if (ans1[i] == mx) printf("%d ", i);
printf("\n");
js = 0;
for (int i = 1; i <= n; ++i) if (vis[i]) ++js;
printf("%d ", js);
for (int i = 1; i <= n; ++i) if (vis[i]) printf("%d ", i);
printf("\n");
}
int main() {
// freopen("a.in","r",stdin);
int T = read();
while (T--) {
n = read(), m = read();
for (int i = 1; i <= n; ++i) {
G[i].clear();
vis[i] = ru[i] = ans1[i] = 0;
}
for (int i = 1; i <= m; ++i) {
int u = read(), v = read();
G[u].push_back(v), G[v].push_back(u);
ru[u]++, ru[v]++;
}
solve();
}
return 0;
}
[SDOI2019]热闹又尴尬的聚会 构造,贪心的更多相关文章
- SDOI2019热闹又尴尬的聚会
P5361 [SDOI2019]热闹又尴尬的聚会 出题人用脚造数据系列 只要将\(p\)最大的只求出来,\(q\)直接随便rand就能过 真的是 我们说说怎么求最大的\(p\),这个玩意具有很明显的单 ...
- [洛谷P5361][SDOI2019]热闹又尴尬的聚会:构造题
分析 构造方法 (截图自UOJ群) 可以使用std::set维护这个过程,不过据说可以做到\(O(n+m)\).. 正确性证明 题目中的要求等价于\((p+1)(q+1) > n\) 设每次找出 ...
- [SDOI2019]热闹又尴尬的聚会(图论+set+构造)
据说原数据可以让复杂度不满的暴力O(Tn^2)过掉……O(Tn^2)方法类似于codeforces一场div2的E题 有一种比较好的方法:每次找出原图G中度最小的点加入q,然后将相邻的点加入新图G'. ...
- 【题解】Luogu P5361 [SDOI2019]热闹又尴尬的聚会
原题传送门 构造题. 明显p,q都越大越好 我们考虑每次取出度最小的点,加到尴尬聚会的集合中(因为把与它相邻的点全删了,不珂能出现认识的情况),把它自己和与自己相连的点从图上删掉(边也删掉),记下这个 ...
- [SDOI2019] 热闹又尴尬的聚会
热闹度\(p\)子图中最小的度数,尴尬度\(q\)独立集大小,之间的约束 \[ \begin{aligned} \lfloor n/(p+1)\rfloor\le q &\rightarrow ...
- vijos2054 SDOI2019 热闹的聚会与尴尬的聚会
题目链接 思路 首先观察题目最后的式子\(\lfloor \frac{n}{p + 1} \rfloor \le q\) 并且\(\lfloor \frac{n}{q+1} \rfloor \le p ...
- [luogu5361]热闹的聚会与尴尬的聚会
由于两者是独立的,我们希望两者的$p$和$q$都最大 考虑最大的$p$,先全部邀请,此时要增大$p$显然必须要删去当前度数最小的点,不断删除之后将每一次度数最小值对答案取max即可 对于$q$也即最大 ...
- LA 6979 Known Notation 构造+贪心 铜牌题
题意:给出一个字符串,有两种操作: 1.插入一个数字 2.交换两个字符 问最少多少步可以把该字符串变为一个后缀表达式(操作符只有*) #include <cstdio> #inclu ...
- Codeforces 985 最短水桶分配 沙堆构造 贪心单调对列
A B /* Huyyt */ #include <bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) #define mkp(a, ...
随机推荐
- HTTP协议小记
应用层上的协议非常重要的一个协议是HTTP协议. 这个协议包括了请求和回复两种报文类型. 请求和回复报文的内容形式是 1)起始行 2)首行 3)消息体 请求报文的内容格式是 <version&g ...
- .net Dapper 实践系列(5) ---事务编辑(Layui+Ajax+Dapper+MySQL)
目录 写在前面 实践步骤 写在前面 上一小节,我们总结了根据Id查询多表数据,最后返回Json对象给前台的例子.接下来,在这一小节我们要实现多表编辑的操作. 实践步骤 因为上一小节以及创建了Edit视 ...
- Oracle分页查询和SQL server分页查询总结
分页查询是项目中必不可少的一部分,难倒是不难,就是这些东西,长时间不用,就忘的一干二净了.今天特此总结一下这两款数据库分页查询的实现过程(只记录效率比较高的) 一.Oracle中的分页查询 1.通用分 ...
- kubernetes(k8s)集群安装calico
添加hosts解析 cat /etc/hosts 10.39.7.51 k8s-master-51 10.39.7.57 k8s-master-57 10.39.7.52 k8s-master-52 ...
- 豆瓣Top250
""" 爬取豆瓣电影TOP250 - 完整示例代码 """ import codecs import requests from bs4 i ...
- ReactiveObjC basic
基础-> https://www.jianshu.com/p/cd4031fbf8ff 在RAC中,万物皆信号. RAC 指的就是 RactiveCocoa ,是 Github 的一个开源框架, ...
- .net core web api 默认的模型验证
转载自 https://www.codercto.com/a/45938.html
- Redux 和React 结合
当Redux 和React 相接合,就是使用Redux进行状态管理,使用React 开发页面UI.相比传统的html, 使用React 开发页面,确实带来了很多好处,组件化,代码复用,但是和Redux ...
- IDEA编码时卡顿问题
当代码行数超过2000行,甚至更多时会出现编码时卡顿到无法编译的情况,解决方法如下: 方法1:修改IDEA配置参数 找到D:\ideaIU-2019.1.1.win\bin\idea64.exe.vm ...
- 最常用MySql数据库备份恢复
1.数据备份类型: ·完全备份:故名思议备份整个数据库 ·部分备份:备份一部分数据集 : ·增量备份:自上次备份以来的改变数据的备份: ·差异备份:自上次完全备份后改变数据的备份: 2.数据备份的方式 ...