《关押罪犯(prison)》.docVIP

  • 10
  • 0
  • 约4.09千字
  • 约 6页
  • 2016-12-21 发布于贵州
  • 举报
NOIP2009提高组《关押罪犯》解题报告 By sx349 【摘要】 核心算法思想:二分法+贪心 主要数据结构:边集数组 其他辅助知识:奇偶染色 时间复杂度: 空间复杂度: 【题目大意】 将给定无向带权图中的点分为两个部分,将与之间的连线去除后,分别建立子图和,求不同划分方案下和中边权的最大值的最小值。 【算法分析】 首先可以考虑最朴素的做法,枚举所有可能的分组方法,求出两个组的最大犯罪值。显然, 这样的一个程序所能处理的数据范围并不是很大。对于每个囚犯,标记0和1表示他所在的监狱,因此,分配囚犯的方案数是,而判断最大值又需要的时间,显然是不可行的。 在思考这个方案的过程中,我们可以发现,对任意一种给定方案,要从两个组中找出其边权的最大值所需的时间复杂度至少是的(因为矛盾关系是随机给出的,因此我们往往需要检查矛盾关系中的大多数以确定一个方案中的最大值,所以不存在低于复杂度的算法来达到这一条件),因此,我们所要做的就是尽量减少需要判断的方案数。 因为在分配方案中,最小的最大值是存在的。假设最小的最大值为,用一个Boolean值表示怨气值的最大值小于等于是否可行,那么我们可以看出,函数分为两段,从到所有的最大值的部分,的值为True,而剩余部分均为False。自然而然的,我们可以想到,如果我们能够找到一种方法,在的复杂度内就能够确定的值,那么我们可以利用二分的思想,令L

文档评论(0)

1亿VIP精品文档

相关文档