noip2010-t3

【题目描述】

  S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为c 的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并造成影响力为c 的冲突事件。每年年末,警察局会将本年内监狱中的所有冲突事件按影响力从大到小排成一个列表,然后上报到S 城Z 市长那里。公务繁忙的Z 市长只会去看列表中的第一个事件的影响力,如果影响很坏,他就会考虑撤换警察局长。在详细考察了N 名罪犯间的矛盾关系后,警察局长觉得压力巨大。他准备将罪犯们在两座监狱内重新分配,以求产生的冲突事件影响力都较小,从而保住自己的乌纱帽。假设只要处于同一监狱内的某两个罪犯间有仇恨,那么他们一定会在每年的某个时候发生摩擦。那么,应如何分配罪犯,才能使Z 市长看到的那个冲突事件的影响力最小?这个最小值是少?

【数据范围】

  对于30%的数据有N≤ 15。

  对于70%的数据有N≤ 2000,M≤ 50000。

  对于100%的数据有N≤ 20000,M≤ 100000。

【解析】

  这道题是并查集的题目,我一开始的思路是分成两个并查集,将关系的怒气值按从大到小排列,每次遇见两个罪犯就将两人放入不同的监狱里。但是我发现了一个问题,如果我们遇到两个罪犯都没有被安排,但我们随便将两个罪犯关入监狱,在后面的关系处理时会有影响,有的时候如果两个罪犯颠倒关押后面的关系就可以解决了。所以我搜了下题解,这里我们用了补集的思想,将1-n作为正常的并查集,n+1-2n是补集的范围,例如如果n=4,有一个罪犯和5在一个集合里,那么这个罪犯就在1的补集中,他不能与1一起关押。同理,我们按怒气值从大到小的顺序处理这些关系,将每个罪犯放入不能和他关在一起的罪犯的补集中,直到出现两个不能在一起的罪犯在一个补集中出现了(即这两个罪犯都不能和第三个罪犯关在一起,且他俩任意一个和第三个罪犯发生的冲突要比他俩在一起发生的冲突更强烈,所以只能将他俩关在一起),这时这就是可能发生的最强烈的冲突。而如果没有这种情况,关押的时候只要把一个罪犯和他的补集关在不同的监狱就行了。

时间: 2024-08-26 22:38:37

noip2010-t3的相关文章

NOIP2010普及组T3 接水问题 ——S.B.S.

题目描述 学校里有一个水房,水房里一共装有 m 个龙头可供同学们打开水,每个龙头每秒钟的 供水量相等,均为 1. 现在有 n 名同学准备接水,他们的初始接水顺序已经确定.将这些同学按接水顺序从 1到 n 编号,i 号同学的接水量为 wi.接水开始时,1 到 m 号同学各占一个水龙头,并同时打开水龙头接水.当其中某名同学 j 完成其接水量要求 wj后,下一名排队等候接水的同学 k马上接替 j 同学的位置开始接水.这个换人的过程是瞬间完成的,且没有任何水的浪费.即j 同学第 x 秒结束时完成接水,则

noip2010提高组题解

NOIP2010提高组题解 T1:机器翻译 题目大意:顺序输入n个数,有一个队列容量为m,遇到未出现元素入队,求入队次数. AC做法:直接开1000的队列模拟过程. T2:乌龟棋 题目大意:有长度为n的棋盘,每个格子对应一个分数,1,2,3,4的卡片共m张,给出四种卡片各自的数量,求改变出牌顺序能获得的最大分数. 思路:开了一个四维的f[i][j][k][l]来表示每张牌有了几张时的最大分数: F[i][j][k][l]=max(f[i-1][j][k][l],f[i][j-1][k][l],f

因为发现对象名称 'dbo.T3' 和索引名称 'PK__T3__3214EC2706CC942B' 有重复的键,所以 CREATE UNIQUE INDEX 语句终止。重复的键值为 (1)。

sql语句:ALTER TABLE T3 ADD  PRIMARY KEY (ID); 执行报错: 消息 1505,级别 16,状态 1,第 1 行因为发现对象名称 'dbo.T3' 和索引名称 'PK__T3__3214EC270466E04C' 有重复的键,所以 CREATE UNIQUE INDEX 语句终止.重复的键值为 (1).消息 1750,级别 16,状态 0,第 1 行无法创建约束.请参阅前面的错误消息.语句已终止. 出错原因: 要在ID列上建主键,但id列数据有重复,不唯一.

[NOIP2016]愤怒的小鸟 D2 T3 状压DP

[NOIP2016]愤怒的小鸟 D2 T3 Description Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可以用它向第一象限发射一只红色的小鸟,小鸟们的飞行轨迹均为形如y=ax2+bx的曲线,其中a,b是Kiana指定的参数,且必须满足a<0. 当小鸟落回地面(即x轴)时,它就会瞬间消失. 在游戏的某个关卡里,平面的第一象限中有n只绿色的小猪,其中第i只小猪所在的坐标为(xi,yi). 如果某只小鸟的飞行

Day4:T3搜索 T4数学题排列组合

T3:搜索 很出名的题吧,费解的开关 同T2一样也是一题很考思考的 附上题解再解释吧: 对于每个状态,算法只需要枚举第一行改变哪些灯的状态,只要第一行的状态固定了,接下来的状态改变方法都是唯一的:每一行需要改变状态的位置都在上一行中不亮的灯的正下面,因为只有这样才能使上一行的灯全亮.我们枚举第一行的状态改变方法(共2^5种),对于每种方法都依次改变下面几行的状态使上面一行灯全亮.到最后一行我们需要判断是否最后一行也恰好全亮,并更新最小步数. 首先需要找到第一行的状态,怎么写?枚举深搜啊 找到了其

现有T1、T2、T3三个线程,你怎样保证T2在T1执行完成之后执行,T3在T2执行完后执行?

考察join /**  * 现有T1.T2.T3三个线程,你怎样保证T2在T1执行完成之后执行,T3在T2执行完后执行?  * @author user  *  */ public class Test3 { public static void main(String[] args) throws InterruptedException { Thread T1 = new Thread(new T1()); Thread T2 = new Thread(new T2()); Thread T

NOIP2010提高组乌龟棋 -SilverN

题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起点出发走到终点. 乌龟棋中M张爬行卡片,分成4种不同的类型(M张卡片中不一定包含所有4种类型的卡片,见样例),每种类型的卡片上分别标有1.2.3.4四个数字之一,表示使用这种卡片后,乌龟棋子将向前爬行相应的格子数.游戏中,玩家每次需要从所有的爬行卡片中选择一张之前没有使用过的爬行卡片,控制乌龟棋子前

NOIP2010 引水入城 题解

http://www.rqnoj.cn/problem/601 今天发现最小区间覆盖竟然是贪心,不用DP!于是我又找到这题出来撸了一发. 要找到最上面每个城市分别能覆盖最下面哪些城市,如果最下面有城市怎么都覆盖不到,就输出覆盖不到的城市数. 这样,最上面的城市能覆盖的最下面的城市一定是一个区间,不会从中间断开.因为如果断开了,那断开的这一部分怎么都没有水能流到了,可以按照覆盖不到处理.当全部能覆盖到的时候,才要用这些区间来算最小需要多少个起点城市,有覆盖不到的就不用这些区间了.居然,好像说得很复

Joomla T3框架布局设置(layout)

T3框架默认支持多种布局,在每种布局中,都是通过区块形式被构建起来的(头部.导航.主体.spotlight等).每个区块包含一个或多个模块,可以灵活指定模块的位置.也就是说,T3布局是以模块位置构成区块,再由区块组成布局样式. 1.创建布局 这种形式的布局文件将被保存在templates/t3_bs3_blank/local/tpls/下. 2.布局文件与布局配置文件保存位置 2.1 另存布局的保存位置(后台) 布局文件:templates/t3_bs3_blank/local/tpls/下 布

joomla T3框架中模板分离与自定义(local文件夹)

问题:辛苦做的模板,在框架升级后,莫名其妙的就不见了?原因是,在原有默认的模板修改内容,升级到新版本时,修改的内容被新内容覆盖更新掉了. 1. 怎么办? 模板内容被覆盖的问题,可以通过将用户的设置.模板与默认模板分离出来,具体方法如下: 在模板中,有个特殊的文件夹"local",将用户所有的布局配置信息.布局文件放到这个文件夹中. 2.文件的优先级 local文件夹:/templates/{template-name}/local template文件夹:/templates/{tem