题目

设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. Flutter报错 Waiting for another flutter command to release the startup lock...

    Waiting for another flutter command to release the startup lock… 异常解决 平时我们在开发flutter过程中,在执行flutter p ...

  2. 小程序websocket心跳库——websocket-heartbeat-miniprogram

    前言 在16年的时候因为项目接触到websocket,而后对心跳重连做了一次总结,写了篇博客,而后18年对之前github上的demo代码进行了再次开发和开源,最终封装成库.如下: 博客:https: ...

  3. 修改定时清理 /tmp 目录下的文件

    初衷 默认系统是超过 30 天不访问的文件自动清除的,但是有时候硬盘用得紧可以考虑修改周期 设置方法 编辑配置文件:vim /etc/cron.daily/tmpwatch #! /bin/sh fl ...

  4. HDU 4994 博弈。

    F - 6 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status ...

  5. 洛谷P1157----组合数的输出

    #include<stdio.h> ] = { ,,,,,,,,,,,,,,,,,,, }; ]; int n, r; ; void dfs(int x) {//x表示当前是第几个数 in ...

  6. JS将扁平化的数据处理成Tree结构

    let jsonData= [ { id:1,  parentId:0, name:"一级菜单A" }, { id:2, parentId:0, name:"一级菜单B& ...

  7. Python学习小记(1)---import小记

    在这种目录结构下,import fibo会实际导入fibo文件夹这个module λ tree /F 卷 Programs 的文件夹 PATH 列表 卷序列号为 BC56-3256 D:. │ fib ...

  8. codewars--js--Reverse or rotate?----es6变量,箭头函数,正则取块

    问题描述: 对输入的str按照sz个数进行分块,若一块内所有数字的立方和是偶数,则倒序:否则,向左移动一位.然后将修改过的块整合到一个字符串,作为输出. The input is a string s ...

  9. NIO、多路复用的终极奥义

    1.现在要让有限的系统资源发挥更大的效率,一个最直接的方式就是进行资源复用,比如线程资源复用. 2.线程资源复用的一个最有效的方式就是使用事件驱动模型进行异步调用. 3.Reactor模型就是基于事件 ...

  10. k8s~部署EFK框架

    EFK,ELK都是目前最为流行的分布式日志框架,主要实现了日志的收集,存储,分析等,它可以与docker容器进行结合,来收集docker的控制台日志,就是stdout日志. elasticsearch ...