第31届IMO 第2题
题目
设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题的更多相关文章
- 第60届IMO 第5题
题目 巴斯银行发行的硬币在一面上铸有H,在另一面上铸有T,哈利有枚这样的硬币并将这些硬币从左至 右排成一行,他反复地进行如下操作:如果恰有k(>0)枚硬币H面朝上,则他将从左至右的第k枚硬币 ...
- IMO 2021 第一题题解及相关拓展问题分析
IMO 2021 第 1 题: 设整数 n ≥ 100.伊凡把 n, n + 1, ..., 2n 的每个数写在不同的卡片上.然后他将这 n + 1 张卡片打乱顺序并分成两堆.证明:至少有一堆中包含两 ...
- 江西财经大学第一届程序设计竞赛 G题 小Q的口袋校园
链接:https://www.nowcoder.com/acm/contest/115/G来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...
- 江西财经大学第一届程序设计竞赛 F题 解方程
链接:https://www.nowcoder.com/acm/contest/115/F来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...
- 江西财经大学第一届程序设计竞赛 H题 求大数的阶乘
链接:https://www.nowcoder.com/acm/contest/115/H 来源:牛客网 晚上,小P喜欢在寝室里一个个静静的学习或者思考,享受自由自在的单身生活. 他总是能从所学的知识 ...
- 山东省第七届ACM竞赛 J题 Execution of Paladin (题意啊)
题意:鱼人是炉石里的一支强大种族,在探险者协会里,圣骑士有了一张新牌,叫亡者归来,效果是召唤本轮游戏中7个已死鱼人.如果死掉的不足7个,那么召唤的数量就会不足7. 鱼人有很多,下面的4个是: 寒光智者 ...
- 2019第十届蓝桥杯 E题 迷宫
/*输入 30 50 01010101001011001001010110010110100100001000101010 00001000100000101010010000100000001001 ...
- 山东省第七届省赛 D题:Swiss-system tournament(归并排序)
Description A Swiss-system tournament is a tournament which uses a non-elimination format. The first ...
- CSDN高校俱乐部第二届战神杯第二题题解
两个人玩一个数字游戏,给定两个正整数A,B,两个人轮流从一个数中减去另外一个数的正数倍.要保证结果非负, 首先得到0的人获胜. 比如:30 8经过一步操作能够变为22 8 或者14 8 或者 6 8. ...
随机推荐
- Go语言实现:【剑指offer】栈的压入、弹出序列
该题目来源于牛客网<剑指offer>专题. 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5 ...
- Go语言实现:【剑指offer】复杂链表的复制
该题目来源于牛客网<剑指offer>专题. 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.( ...
- php 搭建webSocket
<?php //2.设计一个循环挂起WebSocket通道,进行数据的接收.处理和发送 //对创建的socket循环进行监听,处理数据 function run(){ //死循环,直到socke ...
- 如何构建OpenStack镜像
本文以制作CentOS7.2镜像为例,详细介绍手动制作OpenStack镜像详细步骤,解释每一步这么做的原因.镜像上传到OpenStack glance,支持以下几个功能: 支持密码注入功能(nova ...
- Vscode开发Python环境安装
VSCode 开发 Python 使用python,主要是做一些工具和爬虫的操作,语法简单,功能复杂,入手很快. 我们通过在 VSCode 中搜索 Python 插件,发现,开发 python 的话, ...
- ubuntu 14.04 下安装 selenium 2.0
文章参考出处:http://blog.sina.com.cn/s/blog_5042ea610102we4y.html 1.安装 python-pip sudo apt-get install pyt ...
- session和cookie的最深刻理解
先说session 对SESSION的争论好象一直没有停止过,不过幺麽能理解SESSION的人应该占90以上.但还是讲讲,别嫌老~ 有一些人赞成用SESSION,有一些人不赞成.但这个问题到底要怎么说 ...
- 前端项目引入Echarts中的dataTool的正确方式
使用echarts画箱线图时调用echarts.dataTool.prepareBoxplotData() 报错:"echarts.dataTool.prepareBoxplotData i ...
- 【题解】 2月19日 厦门双十中学NOIP2014模拟D2 T2 采药人接水果
[问题描述] 采药人虽然 AFO(SU),但他在闲暇的时候还是可以玩一玩接水果(cat)的.但他渐渐发现 cat 好像有点太弱智.于是他不想浪费他的智商,于是决定写一个程序帮他玩. cat 是这样玩的 ...
- 「数据挖掘入门系列」Python快速入门
Python环境搭建 本次入门系列将使用Python作为开发语言.要使用Python语言,我们先来搭建Python开发平台.我们将基于Python 2.7版本.以及Python的开发发行版本Anaco ...