黑白染色解题报告.PDF

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
黑白染色解题报告

IOI2012 国家集训队作业 paint 解题报告 长沙市雅礼中学 钟沛林 黑白染色解题报告 【简要描述】 要把一张方格纸染成目标状态,一次可以染一个四连通块 (无视颜色)变成黑色或者 白色。问最少步数。 【分析与算法设计】 算法一: 随机染色,进行模拟,多次进行,取最优值,期望得分0 分。 时间复杂度:O(模拟次数) 算法二: 对于n*m=15 的3 个点,我们可以通过状态压缩+记忆化搜索的方法来解决。我们可 以用0~215 这些数把每种状态表示出来,表示每个位置的颜色是白色还是黑色。然后每次枚 举一种染色方法。边界是终止状态的步数是 0 。由于直接采用传统 dp 的方法可能会超时, 所以这里采用记忆化搜索。期望得分15 分。 时间复杂度:O(3n*n) 算法三: 对于m=1 的3 个点,我们只需要直接统计目标状态中有多少段连续的黑色格子即可。 首先这样做肯定是合法的,因为我们一次可以把一段染成黑色。现在我们来证明一下为什么 这样子是最优的。若两个染色操作有重叠但没有包含关系,比如(l1,r1)和(l2,r2) ,l1=l2 , r1=r2 ,首先这两次操作染的颜色必然不同色,同色的话只需要染一次(l1,r2) 。然而不同色 的话,这两次操作必然得到两段不同颜色,这样最多只需要两次操作(l1,r1) ,(r1,r2)或者是 (l1,l2),(l2,r2),这两种情况取哪一张视它们的染色顺序而定。如果(l1,r1)包含(l2,r2),这种情 况也很简单,只需要执行(l1,l2)和(r1,r2)两次操作。所以这样我们就拿到了期望得分15 分。 配合前面得分就有30 分了。 时间复杂度:O(n*m) 算法四: 首先我们建立这样一张无向图:对于每个格子我们视为一个顶点,在相邻的四个格子 中,如果在目标图里它们的颜色一样,就连一条边权为0 的边,若颜色不同就连一条边权为 1 的边。现在我们对于每个格子,以它为起点计算到其他点的最短路,我们找到离这个格子 最远的黑色格子,若这个距离是D ,我们容易用贪心的思想构造一个长度为D+1 的染色序 列来达到目标: 1. 第一步把所有距离=D 的格子染黑。 2. 第二步把所有距离=D-1 的格子染白。 3. …… 1 IOI2012 国家集训队作业 paint 解题报告 长沙市雅礼中学 钟沛林 D+1.把所有距离=0 的格子染成对应颜色。 这样,我们只需要在所有格子中选一个以它作为起点,最远黑色格子距离最短的格子, 那么它的D+1 就是答案。 这样做的合法性是显然的,我们来证明这样做的最优性。 首先我们把所有距离为0 的点压缩成一个点。注意如果我们如果给某些格子染色了的 话,我们把这些格子距离为0 的点一起染了结果不会有影响。 1. 我们可以证明任意方式的染色,总可以转变这样的形式:对于每一个染色操作 所操作的连通块,它总是前一次操作的连通块的子集。这个是可以比较意识流 的感觉出来的,多画几次就明白了。 2. 最后一次操作恰好只要染一个同色连通块。 因此,存在一个最优解是如上方式操作的。 2 2 时间复杂度:O(n m ) 2

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档