题目

设n>=3,考虑一个圆上由2n-1个不同点构成的集合E。现给E中恰好k个点染上黑色,如果至少有一对黑点使得这两个黑点之间的弧上(两段弧中的某一个)包含恰好E中的n个点,就成这样的染色方法是“好的”。

试找出对于集合E能保证任意一种染色方法都是“好的”的最小的k值。


解答

将问题转化为:一个圆上有2n-1个点,一开始都是白色的,将点一个一个染色,染的点必须满足染色方法是“好的”,分析易知,每染一个点,剩下的点里可以染的点的个数-2或-1或-0,我们想找的最小的k值,就是  能染的最多的点+1,这样的话染K个点必然会满足条件。

思考如何才能染最多的点,染色策略如下:染那些可以让染的点减少最少的点。例如,染A点后,剩下的点里可以染的点数目-2;染B点后,剩下的点里可以染的点数目-1;染C点后,剩下的点里可以染的点数目-0;那么就染C点。

这样染色的原因很简单,只要能保证每次都是染那些“损耗”最小的点,那么就可以染最多的点。 但是可能会有一种例外:先染一个-2的点,可能之后会出现两个-0的点,这样就会出现一共染了3个点,但是损耗-2,如果“损耗”最小的点都是-1的话,那么染3个点,损耗-3,即染了相同的点,剩下的点里可以染的点少了,如果这种情况存在的话,那么我们的策略就不对了,但是,这种情况是不存在的,下面给出证明。

先证明-0的点一定是由-2的点得到的:用反证法,假设不是,那么就会得到有无穷个点的结论,得到矛盾。

对染了-2的点经过一系列变化再染-0点这个过程进行分析,该过程可等价为-1····-1,即对于-2,-0,可以看作-1,-1,那么如果存在-2,-0,-0,那么就存在-1,-1,-0,而-1,-1,-0是符合我们的染色策略的,所以我们的策略没问题。

知道了染色策略就要求k值了,我们可以先画一个圆,再随便染一个点,此时剩下的点里的损耗-2的,然后利用我们的策略进行染色,在分析的过程中,会出现第一个点对应的损耗点与第一个点的间隔为3的倍数和非3的倍数两种情况,对于第一种情况(2n-1是3的倍数),k=((2n-1)/3-1)/2 ×3 +1 =n-1,或者 k=(((2n-1)/3-3)/2+1)×3+1=n-1;对于第二种情况(2n-1不是3的倍数),进行简单的画图模拟,可以得到 k=(2n-1 -3)/2+1+1=n

第31届IMO 第2题的更多相关文章

  1. 第60届IMO 第5题

    题目   巴斯银行发行的硬币在一面上铸有H,在另一面上铸有T,哈利有枚这样的硬币并将这些硬币从左至 右排成一行,他反复地进行如下操作:如果恰有k(>0)枚硬币H面朝上,则他将从左至右的第k枚硬币 ...

  2. IMO 2021 第一题题解及相关拓展问题分析

    IMO 2021 第 1 题: 设整数 n ≥ 100.伊凡把 n, n + 1, ..., 2n 的每个数写在不同的卡片上.然后他将这 n + 1 张卡片打乱顺序并分成两堆.证明:至少有一堆中包含两 ...

  3. 江西财经大学第一届程序设计竞赛 G题 小Q的口袋校园

    链接:https://www.nowcoder.com/acm/contest/115/G来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  4. 江西财经大学第一届程序设计竞赛 F题 解方程

    链接:https://www.nowcoder.com/acm/contest/115/F来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  5. 江西财经大学第一届程序设计竞赛 H题 求大数的阶乘

    链接:https://www.nowcoder.com/acm/contest/115/H 来源:牛客网 晚上,小P喜欢在寝室里一个个静静的学习或者思考,享受自由自在的单身生活. 他总是能从所学的知识 ...

  6. 山东省第七届ACM竞赛 J题 Execution of Paladin (题意啊)

    题意:鱼人是炉石里的一支强大种族,在探险者协会里,圣骑士有了一张新牌,叫亡者归来,效果是召唤本轮游戏中7个已死鱼人.如果死掉的不足7个,那么召唤的数量就会不足7. 鱼人有很多,下面的4个是: 寒光智者 ...

  7. 2019第十届蓝桥杯 E题 迷宫

    /*输入 30 50 01010101001011001001010110010110100100001000101010 00001000100000101010010000100000001001 ...

  8. 山东省第七届省赛 D题:Swiss-system tournament(归并排序)

    Description A Swiss-system tournament is a tournament which uses a non-elimination format. The first ...

  9. CSDN高校俱乐部第二届战神杯第二题题解

    两个人玩一个数字游戏,给定两个正整数A,B,两个人轮流从一个数中减去另外一个数的正数倍.要保证结果非负, 首先得到0的人获胜. 比如:30 8经过一步操作能够变为22 8 或者14 8 或者 6 8. ...

随机推荐

  1. sqlserver check running process 1

    check process script 1, check which is current running: use master SELECTspid,ER.percent_complete,CA ...

  2. Entity Framework 实体状态

    从今天开始我们开始讲解EF中的实体状态和数据操作,这篇文章先讲解实体状态. 我们通过前面的学习,知道EF通过上下位负责跟踪实体的状态,实体状态的位置是在命名空间 System.Dat.Entity 里 ...

  3. 基于原生的 html css js php ajax做的一个 web登录和注册系统

    完整代码下载: 百度网盘地址 https://pan.baidu.com/s/1D1gqHSyjgfoOtYCZm7ofJg 提取码 :nf0b 永久有效 注意: 1 如果要正常运行此示例, 本地需要 ...

  4. Mysql 删除从数据库的relay logs最佳方式、最安全方式

    情景 MySQL数据库主从复制在默认情况下从库的relay logs会在SQL线程执行完毕后被自动删除.但是:在relay_log_purge = 0和MHA集群下,不会被自动删除,需要手动删除.如何 ...

  5. 编译安装nginx提示./configure: error: C compiler cc is not found

    1 编译安装nginx提示如下 ./configure: error: C compiler cc is not found 2 解决办法 yum -y install gcc gcc-c++ aut ...

  6. 基于webpack的vue开发环境搭建

    1.新建并初始化项目(npm int -y),安装webpack,webpack-cli webpack-dev-server 安装eslint,eslint-plugin-vue,配置eslint语 ...

  7. implements Serializable有什么作用?

    没有implements Serializable,你就不能通过rmi(包括ejb)提供远程调用.serialization 允许你将实现了Serializable接口的对象转换为字节序列,这些字节序 ...

  8. C语言三(2)

    多重 if...else....else 结构 语法: if(条件1) { 语句1; } else if(条件2) { 语句2; } else if(条件3) { 语句3; } else { 语句N; ...

  9. js能力测评——查找元素的位置

    查找元素的位置 题目描述: 找出元素 item 在给定数组 arr 中的位置 输出描述: 如果数组中存在 item,则返回元素在数组中的位置,否则返回 -1 示例1 输入 [ 1, 2, 3, 4 ] ...

  10. 正则表达式过滤html注释内容

    Regex.Replace("<!--(.|[\r\n])*?-->",string.Empty)