codevs 5971 打击犯罪

题目描述 Description

某个地区有n(n<=1000)个犯罪团伙,当地警方按照他们的危险程度由高到低给他们编号为1-n,他们有些团伙之间有直接联系,但是任意两个团伙都可以通过直接或间接的方式联系,这样这里就形成了一个庞大的犯罪集团,犯罪集团的危险程度唯一由集团内的犯罪团伙数量确定,而与单个犯罪团伙的危险程度无关(该犯罪集团的危险程度为n)。现在当地警方希望花尽量少的时间(即打击掉尽量少的团伙),使得庞大的犯罪集团分离成若干个较小的集团,并且他们中最大的一个的危险程度不超过n/2。为达到最好的效果,他们将按顺序打击掉编号1到k的犯罪团伙,请编程求出k的最小值。

输入描述 Input Description

   第一行一个正整数n。接下来的n行每行有若干个正整数,第一个整数表示该行除第一个外还有多少个整数,若第i行存在正整数k,表示i,k两个团伙可以直接联系。

输出描述 Output Description

一个正整数,为k的最小值

样例输入 Sample Input

7
2 2 5
3 1 3 4
2 2 4
2 2 3
3 1 6 7
2 5 7
2 5 6

样例输出 Sample Output

1

数据范围及提示 Data Size & Hint

n<=1000

输出1(打击掉红色团伙)

解题思路

  这题的题意就是正向顺序删点1~K,使得每个集合的个数都不超过(n + 1) / 2,问最小的K是多少?

  正向顺序删点?感觉跟之前的 Hdu 4496 D-City 有点相像;

  如果正向顺序删点的话,那么每一次都需要重新维护并查集,所以我们可以逆向考虑,即从n~1开始枚举,将点加入图中,此时意味着删除了1 ~ K - 1,图还剩K ~ n;

  若此时剩下每个集合的个数还不超过(n + 1)/ 2,则继续逆向枚举,则到超过为止;

代码如下

 1 #include<iostream>
 2 using namespace std;
 3 const int N = 1010;
 4 int f[N], a[N][N], sum[N], n;
 5 void init(){
 6     for(int i = 1; i <= n; i++){
 7         f[i] = i;
 8         sum[i] = 1;
 9     }
10 }
11 int getf(int x){
12     if(x == f[x])    return x;
13     else    return f[x] = getf(f[x]);
14 }
15 int main(){
16     cin >> n;
17     init();
18     for(int i = 1; i <= n; i++){
19         cin >> a[i][0];
20         for(int j = 1; j <= a[i][0]; j++){
21             cin >> a[i][j];
22         }
23     }
24     for(int i = n; i >= 1; i--){    //逆向枚举
25         for(int j = 1; j <= a[i][0]; j++){
26             if(a[i][j] > i){     //因为是顺序删除,所以删除该点时,那么之前的点已经删除了
27                 int t1 = getf(i), t2 = getf(a[i][j]);
28                 if(t1 != t2){
29                     f[t2] = t1;
30                     sum[t1] += sum[t2];
31                     if(sum[t1] > (n + 1) / 2){
32                         cout << i << endl;
33                         return 0;
34                     }
35                 }
36             }
37         }
38     }
39     return 0;
40 }

打击犯罪

原文地址:https://www.cnblogs.com/zoom1109/p/11052024.html

时间: 2024-10-07 16:09:41

codevs 5971 打击犯罪的相关文章

codevs 5971 打击犯罪 x

题目描述 Description 某个地区有n(n<=1000)个犯罪团伙,当地警方按照他们的危险程度由高到低给他们编号为1-n,他们有些团伙之间有直接联系,但是任意两个团伙都可以通过直接或间接的方式联系,这样这里就形成了一个庞大的犯罪集团,犯罪集团的危险程度唯一由集团内的犯罪团伙数量确定,而与单个犯罪团伙的危险程度无关(该犯罪集团的危险程度为n).现在当地警方希望花尽量少的时间(即打击掉尽量少的团伙),使得庞大的犯罪集团分离成若干个较小的集团,并且他们中最大的一个的危险程度不超过n/2.为达到

一本通 P1386 【打击犯罪】

题库 :一本通 题号 :1386 题目 :打击犯罪 link :http://ybt.ssoier.cn:8088/problem_show.php?pid=1386 O(n3)思路 :此题数据太水,n3就能卡过.暴力枚举1 ~ n,每次都重新将并查集初始化并且按题目输入将所有 >= k(1 <= k <= n)的点合并(及打击掉1 ~ k的犯罪团伙,他们不合并).从1 ~ n枚举直到找到最小的k满足所有犯罪团伙中的最大的一个的危险程度不超过n / 2,直接输出k. code : 1 #

打击犯罪(black)

题目描述 题目描述 Description 某个地区有n(n<=1000)个犯罪团伙,当地警方按照他们的危险程度由高到低给他们编号为1-n,他们有些团伙之间有直接联系,但是任意两个团伙都可以通过直接或间接的方式联系,这样这里就形成了一个庞大的犯罪集团,犯罪集团的危险程度唯一由集团内的犯罪团伙数量确定,而与单个犯罪团伙的危险程度无关(该犯罪集团的危险程度为n).现在当地警方希望花尽量少的时间(即打击掉尽量少的团伙),使得庞大的犯罪集团分离成若干个较小的集团,并且他们中最大的一个的危险程度不超过n/

【题解】打击犯罪

题目描述 某个地区有n(n≤1000)个犯罪团伙,当地警方按照他们的危险程度由高到低给他们编号为1至n,他们有些团伙之间有直接联系,,但是任意两个团伙都可以通过直接或间接的方式联系,这样这里就形成了一个庞大的犯罪集团,犯罪集团的危险程度由集团内的犯罪团伙数量唯一确定,而与单个犯罪团伙的危险程度无关(该犯罪集团的危险程度为n).现在当地 警方希望花尽量少的时间(即打击掉尽量少的团伙),使得庞大的犯罪集团分离成若干个较小的集团,并且他们中最大的一个的危险程度不超过 n/2.为达到最好的效果,他们将按

&lt;wzoi449&gt;打击犯罪

#include <bits/stdc++.h> #define maxn 1005 #define ms(s) memset(s,0,sizeof(s)) #define in(x) scanf("%d",&x) using namespace std; int n,f[maxn],g[maxn][maxn]; int cnt[maxn]; int find(int a){ if(f[a]==a){ return a; } else { f[a]=find(f[a

chinacloud大数据新闻

2015年大数据发展八大趋势   (0 篇回复) “数据很丰满,信息很骨感”:Sight Machine想用大数据的方法,打碎两者间的屏障   (0 篇回复) 百度携大数据"圈地"证券业 "BAT"开启互联网金融新战场   (0 篇回复) 码农的春天到了?   (0 篇回复) 浪潮大数据一体机出招 装备科研“最强大脑”   (0 篇回复) 方物软件承担国家“核高基”重大专项研发   (2 篇回复) 2013互联网大会透露的热点与新趋势   (1 篇回复) 大数据从幕

网络黑色产业调查:职业黑客推动洗钱贩卖身份

网络黑色产业调查:职业黑客推动洗钱贩卖身份 原标题:网络黑色产业调查 1 导读 网络犯罪呈现产业链化,分工日趋明细.专业化黑色利益链条的出现,让交易.勾连的双方,可能无须相互认识或见面.社交软件成为网络犯罪的重要工具和阵地,在某些情况下,甚至影响社会稳定.威胁国家安全. 本报记者 王峰 北京报道 “简直是腹背受制”,黄安(化名)谈到2015年8月向公安机关报案的感受时说. 黄安是某航空公司机票销售部门的负责人.2015年7月31日开始,这家航空公司的网上销售机票B2B系统就开始遭受黑客攻击,攻击

提升大数据数据分析性能的方法及技术(一)

关于此文 最近在忙着准备校招的相关复习,所以也整理了一下上学期上课时候的学到的一些知识.刚好发现当时还写了一篇类似于文献综述性质的文章,就在这里贴出来.题材是关于大数据的,也是比较火热的一个话题,虽然现在接触的项目与大数据不太有关联,可能以后也不一定从事这方面的工作吧.就IT行业的研究成果来讲国外期刊无论是发表速度还是质量都是高于国内,所以参考的大部分都是当时最新在核心期刊上发表的论文,参考文献在最后一一列出.因为文章没有多少自己的创新点,仅仅是最新.最热技术或者分析的一个总结,所以放上来仅仅是

iOS取证将如漫漫长夜

日前因恐攻一案,FBI对一支已上锁的iPhone 5c束手无策,美国法院出具命令要求苹果配合,但被苹果公司执行长库克以维护安全及隐私为由悍然拒绝. 平心而论,各有其立场,但在一个犯罪案件之中,真的可以容许因设备厂商所建立的”完美”机制,而使得重要迹证无从提取吗?若然如此,法律有何用?执法单位的公权力在iDevice的面前,就这么轻易的被厂商所制造的技术门坎给挡住,不得其门而入?这不如同CrytoLocker勒索病毒一样,是对现代计算机科技安全的最大讽刺吗? 别误会我不是主张个人隐私不重要,而是希