[NOIP2010 T3]关押罪犯

【NOIP 2010 提高组 T3】关押罪犯(并查集) 题目描述 Description S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为c 的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并造成影响力为c 的冲突事件 阅读详情
描述 Description
S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为c 的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并造成影响力为c 的冲突事件。
每年年末,警察局会将本年内监狱中的所有冲突事件按影响力从大到小排成一个列表,然后上报到S 城Z 市长那里。公务繁忙的Z 市长只会去看列表中的第一个事件的影响力,如果影响很坏,他就会考虑撤换警察局长。
在详细考察了N 名罪犯间的矛盾关系后,警察局长觉得压力巨大。他准备将罪犯们在两座监狱内重新分配,以求产生的冲突事件影响力都较小,从而保住自己的乌纱帽。假设只要处于同一监狱内的某两个罪犯间有仇恨,那么他们一定会在每年的某个时候发生摩擦。那么,应如何分配罪犯,才能使Z 市长看到的那个冲突事件的影响力最小?这个最小值是多少?
输入格式 InputFormat
输入文件的每行中两个数之间用一个空格隔开。
第一行为两个正整数N 和M,分别表示罪犯的数目以及存在仇恨的罪犯对数。
接下来的M 行每行为三个正整数aj,bj,cj,表示aj 号和bj 号罪犯之间存在仇恨,其怨气值为cj。数据保证1<=aj<bj<N,0<cj<=1,000,000,000 且每对罪犯组合只出现一次。
输出格式 OutputFormat
输出共1 行,为Z 市长看到的那个冲突事件的影响力。如果本年内监狱中未发生任何冲突事件,请输出0。
样例输入 SampleInput [复制数据]

样例输出 SampleOutput [复制数据]

数据范围和注释 Hint
【数据范围】
对于30%的数据有N≤ 15。
对于70%的数据有N≤ 2000,M≤ 50000。
对于100%的数据有N≤ 20000,M≤ 100000。
时间限制 TimeLimitation

各个测试点1s


此题有两种解法,并查集与 二分搜索+bfs判断二分图


并查集现在还不会判断奇环。。。因此不介绍


知识点:二分图判断


方法:初始化每个结点d[i]:=-1


bfs 每次取图中一个未被访问的结点。将其染为白色


      每次取队首元素,将所有与之相临未访问的点染为相反颜色。


      如果存在被访问过的点颜色于队首元素相同。


      那么这个图不是二分图 


时间复杂度o(n)


注意点:一定要对每个未访问的点进行bfs,因为图可能不是连通的


题目要求我们使最大的冲突最小。


很容易的想出将每个人的冲突由大到小排序。


经过观察可以发现如果冲突i一定会发生,那么以所有大于i的冲突


为边,可以构成一个二分图。用bfs判断二分图就可以了


然后发现这个冲突满足二分的条件


因为结果一定是TTTTTTFFFFFFF我们只要二分出一个最靠后的T


输出答案即可。


var n,m,i,x,y,a,b,ans:longint;
    e,e1,f,h,next,head,w:array[0..200000]of int64;
    s,d:array[1..100000]of longint;
    v:array[1..100000]of boolean;
    left,right,mid:int64;

procedure insert(a,b,w1,i:longint);
begin
    next[i]:=head[a];
    e[i]:=b;
    w[i]:=w1;
    head[a]:=i;
end;


procedure qsort(l,r:longint);
var i,j,s,x:longint;
begin
    i:=l;j:=r;x:=e1[(l+r)div 2];
    while i<=j do
    begin
       while e1[i]>x do inc(i);
       while e1[j]<x do dec(j);
       if i<=j then
          begin
              s:=e1[i];e1[i]:=e1[j];e1[j]:=s;
              inc(i);dec(j);
          end;
     end;
     if i<r then qsort(i,r);
     if l<j then qsort(l,j);
end;

function panduan(x:int64):boolean;
var h,t,y,q,k,i,key:longint;
begin
    fillchar(s,sizeof(s),0);
    fillchar(v,sizeof(v),false);
    fillchar(d,sizeof(d),-1);
    for i:=1 to n do if v[i]=false then
    begin
    key:=i;
    s[1]:=key;d[key]:=0;v[key]:=true;
    h:=1;t:=1;
    while h<=t do
    begin
        q:=head[s[h]];
        while q<>0 do
        begin
            if not(v[e[q]])and(w[q]>x) then
            begin
                inc(t);
                s[t]:=e[q];
                v[e[q]]:=true;
                d[e[q]]:=1-d[s[h]];
            end;
            if (v[e[q]])and(w[q]>x)and(d[e[q]]=d[s[h]]) then exit(false);
            q:=next[q];
        end;
        inc(h);
    end;
    end;
    exit(true);
end;

begin
    fillchar(h,sizeof(h),0);
    readln(n,m);  e1[0]:=0;
    for i:=1 to m do
    begin
        readln(a,b,e1[i]);
        insert(a,b,e1[i],i*2);
        insert(b,a,e1[i],i*2+1);
    end;
    qsort(0,m+1);
    left:=1;right:=m+1;

    while left+1<right do
    begin
        mid:=(left+right)div 2;
        if panduan(e1[mid]) then left:=mid
                        else right:=mid;
    end;

    writeln(e1[left]);
  {
    for i:=0 to m do
    begin
    writeln(e1[i],' ',panduan(e1[i]));
        //if panduan(e1[i]) then ans:=e1[i] else break;
    end;                          }
    readln;readln;
end.




【题解-洛谷】P1525 [NOIP 2010 提高组] 关押罪犯 NOIP2010 提高组 T3。 阅读详情

相关推荐

S32K314 EB配置MCAL全模块讲解【Autosar——1 MCU模块详解】持续更新中

FIRC(fast internal RC Oscillator) :高速内部时钟,固定48MHZ;SIRC(Slow Internal RC Oscillator):低速内部时钟,固定32KHZ;FXOSC(Fast Crystal Oscillator Digital Controller):高速外部晶振(8-40MHZ),根据原理图选型进行配置;SXOSC():外部低速外部时钟,固定输入32.768KHZ;PLL_PHIn_CLK:时钟倍频锁相环时钟范围(640-1280MHZ);

qq_40488886的博客 1781

noip2010T3关押罪犯

【问题描述】 S城现有两座监狱,一共关押着N名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为c的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并造成影响力为c的冲突事件。每年年末,警察局会将本年内监狱中的所有冲

Ostmbh的博客 718

树莓派4B:控制步进电机

文章目录准备阶段接线阶段树莓派程序 准备阶段 准备以下物品,淘宝都可以买到: 57步进电机 电源开关(220v转24v,3A,72W) 步进电机驱动器 电源线 电线 杜邦线 树莓派4B一套 具体型号如下: 接线阶段 整体:接线效果如下图 电源开关起220v转24v作用,很好接线,输出24v接入步进电机驱动器 步进电机驱动器的 A+ A- B+ B- 按提示接步进电机四线,步进电机上就会有说...

学习路上的鸭子的博客 1万+

NOI2010全程日记

<br />7.31(day1):<br />         从七月30号开始坐车,硬座啊…经过了十四个小时的煎熬,终于到达了烟台,车上空调很冷,差点冻感冒了。然后就到了这个学校,先吃早饭,然后报道。不得不说ccf效率依然很低,半天过去一个人,终于到了我们啊。今年发了一个包,一个珊瑚的模型,一件背心印有ccf noi的,夏令营和省队不一样,夏令营的是jeep的,感觉不错。然后这一天就一直在睡觉,除了中午晚上的吃饭。然后接受了志愿者的采访,还跟教主合影了。教主真是威武啊,说的话那么教主。吃完晚饭貌似就看柯南

mintalfance的专栏 2578

在树莓派上部署训练好的YOLO模型

.pt.模型转换为onnx格式的模型,树莓派上部署模型

pai_da_xing8的博客 3887

从晶体管到触发器:为什么芯片设计必须区分同步/异步复位?

本文深入探讨了芯片设计中同步复位与异步复位的物理本质与工程权衡。从晶体管级的CMOS结构出发,剖析了两种复位方式在物理实现、时序可靠性(如建立/保持时间、恢复/移除时间)上的根本差异,并分析了在不同应用场景下的选择策略。文章强调,理解复位信号的底层机制对于确保芯片时序收敛、系统上电确定性及整体鲁棒性至关重要。

time3的博客 221

【NOIP2010】【并查集】T3 关押罪犯 题解

3.关押罪犯 (prison.pas/c/cpp) 【问题描述】 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为c 的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并造成影

It's Maverick. 580

【WLAN】【测试】WPS测试方法小结

手机 一般稍微老的手机会支持,新手机反而不支持。 比如小米6(系统版本新的话不支持)在设置——高级设置——WPS连接。 笔记本 有些笔记本(如Surface Laptop 3)天生支持WPS,比如在连接某SSID的时候,会有“也可以通过按路由器上的按钮连接”这样的字样,出来后按AP的WPS按键即可以进行连接。 Qss软件 AP mesh组网中,Controller和Agent之间通过WIFI组网,可使用WPS的方式进行连接。可利用这点用Agent来测试AP的WPS功能。 ...

一介草民,只为生活。 1万+

TYVJ1403(NOIP2010提高组T3)关押罪犯

题目大意: n个点,m条边,边权cj。将n个点分到两个集合中(集合均不能为空),使两个集合内的所有边的最大值最小,输出最小值。样例输入: 4 6 1 4 2534 2 3 3512 1 2 28351 1 3 6618 2 4 1805 3 4 12884样例输出: 3512样例解释: A集合:1 4; B集合:2 3; 集合内边权最大值为3512.数据范围: 对于100%

dugudashen的博客 480

PyTorch 最新安装教程(2021-07-27)

PyTorch 最新安装教程(2021-07-27)前言1. 安装 Anaconda2. 检查显卡,更新驱动3. 创建PyTorch环境4. 配置清华TUNA镜像源5. 安装 PyTorch6. 测试 前言 万事开头难! 这句话又一次被我验证。 记得前不久刚陷入Tensorflow2.0的安装困境,这一次又被PyTorch 搞哭辽。 孩子太难了o(╥﹏╥)o,不过还好最终成功安装,感谢全网资源,感谢大佬们的博客!被我一次一次试了出来。 1. 安装 Anaconda Anaconda 是一个用于科学计算的 P

全网粉丝30W+,优快云、稀土掘金人工智能领域签约作者,人工智能、大模型、Python 爬虫,商务合作,请私信沟通。 23万+

南京理工大学计算机预推免面试(双非重点关注)

南京理工大学总体来说对双非学校比较友好,上岸率比较高,而且面试形式是线上,在预推免的过程中,可以作为重点关注的学校,但是一定要注意南理报名截止的时间,部分学校可能保研名额公示的比较晚,对于保研边缘人来说很可能会错过,我的建议是,即使不确定能否拿到保研名额,先查一下截止时间,先在系统上报名!!一旦拿到了offer,就是铁的,保底专硕,而且有很大的技巧性,一定要认真看哈!!!每个人的情况可能都不一样,如果有需要帮忙可以私我~~~

D1379951481的博客 2017

[CODEVS 1069][NOIP2010提高T3] 关押罪犯

传送门 将边从大到小排序,用并查集维护,第一条无法满足的边就是答案。重点在于如何记录哪些点不在同一个集合。我们给每一个实点A对应一个虚点A’。若要记录A、B两点不在同一集合即给A、B’以及B、A’之间连边。接下来,若要记录B、C两点不在同一集合,连边之后A、C就在同一集合了。 就不要吐槽我的图片丑了。。好不容易才画起来的呢。。 贴代码 /* 作者:ymzQwQ 题目:p1069 关押罪犯 ...

ymzqwq的博客 448

MZI and MI Optical Waveguide(马赫曾德与迈克尔逊光波导)

注意,这里的 “镜子” 并不是真的在波导中做一个镜子出来,而是通过使用一个 1x2 的 MMI 结构将 MMI 输出的两个端口连接起来形成一个 “宽带镜子”。对于这里形成镜子的详细原理,后面有时间了我们再做更加详细地介绍。,它由一个 splitter 构成和两个仿佛带有 “镜子” 的臂组成。相比较于 MZI,光波可以在它的臂中传输,最终从进光口处出去得到相长或者相消干涉,很明显,在。)的折射率,从而使得两个臂上产生的相位差值不同,最终得到相长或者相消干涉的结果。这里,给大家介绍一下。,它更像是一个折叠的。

u011699626的博客 2449

洛谷 P1525 [NOIP2010 T3] 关押罪犯

并查集+贪心

依然一笑作春温。 407

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【原题】【数据结构】【noip 2010T3】关押罪犯

问题 描述 Description S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为c 的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并造成影响力为c 的冲突事件。 ...

weixin_30642561的博客 140

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

每日一题001-并查集-洛谷p1525关押罪犯

这样目前分到的罪犯都没有仇恨值,直到处理数据的时候发现两个罪犯已经在同一个监狱中后,说明这个仇恨值就是最大的,因为比他大的仇恨值都拆开了不在一个监狱,所以是0,而比他小的仇恨值又没有意义了(求最大的仇恨值),也就是后面的数据不需要再处理了(前提是已经排序好了)。是的,实际上我应该把他们分在两个监狱中,但是我现在不需要操作,因为他们是新人,和别的罪犯都没有仇(根据目前的数据),所以是把罪犯一分在监狱1还是监狱2是没有意义的,只要罪犯一和罪犯二不在一个监狱就行,所以我暂时什么也不用干,你就当随便分了一个监狱。

zjh的博客 880

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

信息学奥赛一本通 1861:【10NOIP提高组】关押罪犯 | 洛谷 P1525 [NOIP 2010 提高组] 关押罪犯

按权值从大到小遍历所有的边,尽量让权值大的边所连接的两个顶点不在同一个集合。如果发现某条边连接的两个顶点无法放在不同的集合,那么该边的两个顶点就必须放在相同的集合中,该边就是集合中边权最大的边。该边的边权就是所有的集合划分方案中集合中最大边权的最小值。现在给定很多顶点和预设的边,将所有的顶点分为两个集合,每个集合中顶点之间的边都生效。有顶点1到顶点3的边,权值为3,有顶点2到顶点3的边,权值为2,设总顶点数n为10。一个囚犯是一个顶点,一个囚犯对可以看做一条边,每个囚犯对的怨气值是边的权值。

君义NOIP的博客 1212

TYVJ 1403 [NOIP2010]关押罪犯

d[i] : 记录上一个和他有矛盾且和他分在不同监狱的人。 P1403 [NOIP2010]关押罪犯 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述    S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(

long long ago 1038

【NOIP2010TGT3】洛谷1525 关押罪犯【解法一】

贪心+并查集

YHaX的博客 658

NOIP2010 关押罪犯 (并查集)

若x,y有关系 将x与y的补集, y与x的补集建立关系 const maxn=20008; maxm=100008; var eg:array[0..maxm,1..3] of longint; f:array[0..maxn*2] of longint; i,j,m,n,x,y,z:longint; procedure swap(var a...

aekijekzn484879763的博客 152

【NOIP2010提高组】关押罪犯

以删边的方式看哪些边删掉后能成为二分图,删掉的最大边就为答案。 将所有边排序,进行二分猜答案,猜小于等于哪条边的删掉后为二分图,再进行验证。#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #include<cmath> #include<vector> #incl

细雨欣然 610

NOIP2010提高组] CODEVS 1069 关押罪犯(并查集)

这道这么简单的题目还写了这么久..将每个会发生冲突的两人的怒气进行排序,然后从怒气大到小,将两个人放到不同监狱中.假如两人都已经被放置且在同一监狱,这就是答案.----------------------------------------------------------------------------------------#include<cstdio>#include&l...

weixin_30546189的博客 115

NOIP2010关押罪犯

并查集水题++

hh_cnyali的博客 424

关押罪犯 (NOIP2010)复赛 提高组 试题三 解题代码

点此查看题目 #include #include #define DEBUG #ifndef DEBUG #define N_MAX (2000+1) #define M_MAX (10000+1) #else #define N_MAX (5+1) #define M_MAX (10+1) #endif int g_iEffectOut = 0; int g_iCrimeNum =

ccnyou的专栏 3725

P1525 [NOIP2010 提高组] 关押罪犯【并查集】

NOIP2010 提高组 T3。

海岛Blog 1308

P1525 [NOIP 2010 提高组] 关押罪犯

拓展域并查集是一种数据结构,用于解决具有多个相互关系集合的问题。它是传统并查集的扩展,能够处理集合间的不同关系,如相互排斥或相互独立的关系。只看定义是不可以的,我们来看一个应用场景:n 个点有 m 对关系,把 n 个节点放入两个集合里,要求每对存在关系的两个节点不能放在同一个集合。问能否成功完成?这个问题我们直接用普通并查集是无法通过的,我们必须换一个更加高级的办法。在原本的并查集中,i 号点在并查集中对应的点正好为 i,而在拓展域并查集中对应的是 i 和 i+n 等。

2301_81675436的博客 704
上一篇: 【动归】rainbow与freda染旗
下一篇: TYVJ 三周年模拟赛记录
UtralK
博客等级 码龄14年 3粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值