#并查集#SSL 2342 信息学奥赛一本通 1386 打击犯罪
信息学奥赛一本通链接
题目
求最少打击的团伙数,并且使最大的团伙危险程度不超过n/2。
分析
从nnn到111逆向枚举,每次把点kkk加入图中,也就是删掉1∼k−11\sim k-11∼k−1,剩余k∼nk\sim nk∼n,若最大集合点数不超过n/2n/2n/2,说明这种方案可行,kkk还能更小,一旦不满足,意味着第kkk个点加入图中就不可行了,所以点kkk必须得删,所以输出答案。
邻接矩阵代码(0ms 5152k)
#include <cstdio>
#include <cctype>
using namespace std;
int n,a[1001][1001],c[1001],f[1001];
int in(){int ans=0; char c=getchar();while (!isdigit(c)) c=getchar();while (isdigit(c)) ans=ans*10+c-48,c=getchar();return ans;
}
int getf(int u){return (f[u]==u)?u:f[u]=getf(f[u]);}
int main(){n=in();for (int i=1;i<=n;i++){c[i]=1; f[i]=i; a[i][0]=in();for (int j=1;j<=a[i][0];j++)a[i][j]=in();}for (int k=n;k>=1;k--)for (int i=1;i<=a[k][0];i++)if (a[k][i]>k){//加入int x=getf(k),y=getf(a[k][i]);if (x!=y){//不同集合f[y]=x;c[x]+=c[y];//团伙if (c[x]>n/2){//超过printf("%d",k);return 0;}}}
}
邻接表代码(0ms 1276k)
#include <cstdio>
#include <cctype>
using namespace std;
struct node{int y,next;}e[5001];//不可能太多的
int n,m,ls[1001],c[1001],f[1001];
int in(){int ans=0; char c=getchar();while (!isdigit(c)) c=getchar();while (isdigit(c)) ans=ans*10+c-48,c=getchar();return ans;
}
int getf(int u){return (f[u]==u)?u:f[u]=getf(f[u]);}
int main(){n=in(); int t,x,y;for (int i=1;i<=n;i++){c[i]=1; f[i]=i; t=in();for (int j=1;j<=t;j++){//邻接表e[++m].y=in();e[m].next=ls[i]; ls[i]=m;}}for (int k=n;k>=1;k--){t=ls[k];while (t){if (e[t].y>k){//犯罪团伙x=getf(k); y=getf(e[t].y);if (x!=y){//不在集合f[y]=x;c[x]+=c[y];if (c[x]>n/2){//超过printf("%d",k);return 0;}}}t=e[t].next;}}
}
#并查集#SSL 2342 信息学奥赛一本通 1386 打击犯罪相关推荐
- 信息学奥赛一本通 1386:打击犯罪(black)
[题目链接] ybt 1386:打击犯罪(black) [题目考点] 1. 并查集 [解题思路] 这是个无向图.每个犯罪团伙是一个顶点,犯罪团伙之间的联系是边,每个犯罪集团是一个连通分量. 以下描述中 ...
- 信息学奥赛一本通(基础算法与数据结构-题解汇总目录)
信息学奥赛一本通(C++版)在线评测系统 基础(二)基础算法 更新中...... 第一章高精度计算 1307[例1.3]高精度乘法 1308[例1.5]高精除 1309[例1.6]回文数(Noip ...
- 信息学奥赛一本通 (C++)上机练习
信息学奥赛一本通(C++)上机练习 此书为娃儿的第一本刷题书.娃儿现在四年级 ,希望他能坚持下来.特开贴加油 luogu: disangan223 第一部分 C++语言 第一章 C++语言入门 T10 ...
- 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离
首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...
- 信息学奥赛一本通 第五版(C++版)
信息学奥赛一本通 第五版(C++版)第一部分 C++语言 第一章 C++语言入门 第二节 C++语言程序设计 P15 1. 编写一个能够输出Hello,World!的程序,这个程序常常作为一个初学者接 ...
- 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划
总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 第二部分 基础算法 第九章 动态规划 第一节 动 ...
- 信息学奥赛一本通_长乐一中老师演绎“奥赛传奇”
董永建(右一)在课堂上. 台海网5月14日讯 据福州晚报报道,长乐一中有一位"传奇"老师--15年来,他辅导的学生在全国高中生信息学奥赛中获金牌3人次.银牌3人次.铜牌5人次:在全 ...
- 信息学奥赛一本通 提高篇 第5章 矩阵乘法
例1 矩阵AXB 信息学奥赛一本通(C++版)在线评测系统 [矩阵乘法]矩阵A×B_Uletay-CSDN博客 矩阵乘法--矩阵A×B_vina的博客-CSDN博客 一本通1641[例 1]矩阵 A× ...
- 《信息学奥赛一本通提高篇》第6章 组合数学
例1 计算系数(NOIP2011提高) 信息学奥赛一本通(C++版)在线评测系统 NOIP2011计算系数_nanhan27的博客-CSDN博客 「NOIP2011」 计算系数 - 组合数_TbYan ...
最新文章
- EBS-使用 fnd_user_pkg API 创建用户,添加职责,修改用户
- Python 基础教程:常用函数整理
- 算法导论-装配线调度问题
- python一元三次方程拟合_一元三次方程的求根公式
- 如何在 Apache 中为你的网站设置404页面
- 后宫佳丽三千,假如古代皇帝也懂负载均衡算法...
- sql两个时间之间的小时差_2年级学生每天上学路上有两个小时车程,该如何利用好这个时间?-知乎亲子热点快报/2020/09/04...
- Python入门 程序的套路
- 10-1 channel
- idea如何一个项目如何运行多个实例
- 使用Fiddler4抓取微信小程序请求
- 四步成为人工智能产品经理
- DongTai--被动型IAST工具部署体验
- 项目开发日记:陀螺仪的零漂现象
- c++语言计算圆周率,计算圆周率的C++程序(30000位)
- android 画布实现签名,Android实现屏幕手写签名
- Win7系统安装教程【附Win7/64位系统下载地址】
- 怎样将微信热门文章采集到自己的公众号中?
- Ubuntu 18.04 配置ibus中文拼音输入法
- 测试经理教你如何用monkey进行压力测试!