Codeforces 题面传送门 & 洛谷题面传送门

一道脑筋急转弯的结论题。

首先我们考虑对于某个特定的金币数 \(m\),有哪些 \(n\) 满足条件。考虑最 naive 的情况,\(m=0\):显然 \(n=1,2\) 满足条件,而对于 \(n=3\),由于总共只有 \(0\) 个金币,因此第 \(2,3\) 个人会且只会拿到 \(0\) 个金币,而即便第一个人被杀,问题转化为 \(n=2\) 的情形,另外两个人也会活下来,没有做到“严格更优”,因此另外两人必然投反对,第一个人也就被杀了。对于 \(n=4\),第一个人自己肯定赞成,由于第一个人被杀后问题转化为 \(n=3\) 的情形,此时第二个人必然被杀,因此第二个人也会赞成,后两人由于不管怎么样都是 \(0\) 个金币且一定活下来,因此自然投反对,\(2\) 对 \(2\),因此第一个人会活下来。同理 \(n=5\),后四个人不管怎么样都是 \(0\) 个金币,都投反对,因此第一个人会被杀;\(n=6\),第一个人赞成,由于第一个人被杀后,第二个人就变为 \(n=5\) 的分配金币情况,不论怎样都被杀,因此第二个人也会赞成,后四个人自然反对,\(2\) 对 \(4\),人数没过半,第一个人被杀;\(n=7\),第一、二、三个人肯定都会赞成,否则轮到它们分的时分别是 \(n=5,6\) 的情况,这两种情况都会导致分金币的人被杀,但另外四个人还剩会反对,\(3\) 对 \(4\),人还是不够,被杀;\(n=8\),类似地有前四个人投赞成,后四个人投反对,刚好 \(4\) 对 \(4\)。

相信推到这里,聪明的你已经发现,对于 \(m=0\) 的情况,符合条件的 \(n\) 可以写成 \(2^k\) 的形式 \((k\in\mathbb{Z})\)

接下来考虑推广到更一般的情况,容易注意到一件事情,那就是当 \(n=2m\) 时一定符合条件,此时第一个人只用把金币分给与它所在位置奇偶性相同的人即可,这个不难归纳证明。同理 \(n=2m+1\) 时候也符合条件,类似地分给第 \(3,5,7,\cdots,2k+1,\cdots,2m+1(k\in[1,m])\) 即可。我们考虑从 \(n=2m+2\) 开始推起,显然当 \(n=2m+2\) 时第一个人只用拿金币贿赂第 \(3,5,7,\cdots,2m+1\) 个人即可,因为如果第一个人被杀死了,轮到第二个人分金币,他肯定会分给第 \(4,6,8,\cdots,2m+2\) 个人,这些人就一分钱都莫得了,加上自己,刚好 \(m+1\) 个人。但是 \(n=2m+3\) 时就没那么走运了,因为 \(m\) 个金币最多贿赂 \(m\) 个人,即便你把这些金币分给第 \(5,7,9,\cdots,2m+3\) 个人,让他们赞成你,又如何?第二个人必然反对——因为如果第一个人被杀死了,轮到他分,不管怎样都是 \(0\) 个金币,没有做到“严格更优”,同理第三个人也会反对,第 \(4,6,8,\cdots,2m+2\) 个人也就更会反对了——如果第二个人分他们本可以拿的更多的,因此总共 \(m+1\) 人赞成,第一个人被杀。对于 \(n=2m+4\) 的情况,首先第一个人会赞成,其次第二个人也会赞成,因为如果第一个人被杀问题就变为 \(n=2m+3\),他也就 GG 了,然后你再拿金币贿赂第 \(6,8,\cdots,2m+4\) 个人——因为如果第一个人被杀,第二个人 \(n=2m+3\) 的情况也被杀,就轮到第三个人分金币,那他肯定会分给第 \(5,7,\cdots,2m+3\) 个人,就没有这些人的份了,他们都投赞成,总共 \(m+2\) 个赞成,刚好。\(n=2m+5\),第一个人赞成自己,第二个人反对,因为就算第一个人被杀轮到他分还是 \(0\) 个,第三、四、五个人同理反对,此时再贿赂 \(m\) 个人,最多 \(m+1\) 个赞成,被杀。同理 \(n=2m+6,2m+7\) 也会被杀,而对于 \(n=2m+8\),第一个人显然赞成,第二、三、四个人也赞成,否则轮到他们时他们就被杀了,此时再贿赂 \(m\) 个人,总共 \(m+4\),刚好过半。

相信聪明的读者一定还能发现,对于这种情况,符合条件的 \(n\) 一定等于 \(2^k+2m(k\in\mathbb{Z})\),因此对于 \(n\) 是奇数的情况答案显然是 \(\dfrac{n-1}{2}\),否则记 \(k\) 为满足 \(2^k\le n\) 的最大的整数,答案就是 \(\dfrac{n-2^k}{2}\)。

真·这篇题解码了我 1.2k,尽管只是个 *2300

Codeforces 690A2 - Collective Mindsets (medium)的更多相关文章

  1. Collective Mindsets (medium) (逻辑题)

    B - Collective Mindsets (medium) Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I6 ...

  2. Collective Mindsets (easy)(逻辑题)

    Collective Mindsets (easy) Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d &am ...

  3. CodeForces 690C2 Brain Network (medium)(树上DP)

    题意:给定一棵树中,让你计算它的直径,也就是两点间的最大距离. 析:就是一个树上DP,用两次BFS或都一次DFS就可以搞定.但两次的时间是一样的. 代码如下: #include<bits/std ...

  4. Maximum Control (medium) Codeforces - 958B2

    https://codeforces.com/contest/958/problem/B2 题解:https://www.cnblogs.com/Cool-Angel/p/8862649.html u ...

  5. Guard Duty (medium) Codeforces - 958E2 || (bzoj 2151||洛谷P1792) 种树 || 编译优化

    https://codeforces.com/contest/958/problem/E2 首先求出N个时刻的N-1个间隔长度,问题就相当于在这些间隔中选K个数,相邻两个不能同时选,要求和最小 方法1 ...

  6. codeforces 690D2 D2. The Wall (medium)(组合数学)

    题目链接: D2. The Wall (medium) time limit per test 2 seconds memory limit per test 256 megabytes input ...

  7. codeforces 690C2 C2. Brain Network (medium)(bfs+树的直径)

    题目链接: C2. Brain Network (medium) time limit per test 2 seconds memory limit per test 256 megabytes i ...

  8. 【树形DP】codeforces K. Send the Fool Further! (medium)

    http://codeforces.com/contest/802/problem/K [题意] 给定一棵树,Heidi从根结点0出发沿着边走,每个结点最多经过k次,求这棵树的最大花费是多少(同一条边 ...

  9. 【贪心】codeforces B. Heidi and Library (medium)

    http://codeforces.com/contest/802/problem/B [题意] 有一个图书馆,刚开始没有书,最多可容纳k本书:有n天,每天会有人借一本书,当天归还:如果图书馆有这个本 ...

随机推荐

  1. Java中类及方法的加载顺序

    1. 虚拟机在首次加载Java类时,会对静态代码块.静态成员变量.静态方法进行一次初始化(静态间按顺序执行). 2. 只有在调用new方法时才会创建类的实例. 3. 类实例创建过程:父子继承关系,先父 ...

  2. Alpha阶段发布声明

    发布声明 Alpha 1.Alpha版本功能说明 功能列表和详情图 模块 功能 展示 首页 查看首页博文,搜索博文,可供未登录用户使用 动态 查看推荐动态给未登录用户使用,登录用户可以查看关注动态.我 ...

  3. 并发编程从零开始(六)-BlockingDeque+CopyOnWrite

    并发编程从零开始(六)-BlockingDeque+CopyOnWrite 5.2 BlockingDeque BlockingDeque定义了一个阻塞的双端队列接口: 该接口继承了BlockingQ ...

  4. STM32必学的时钟系统

    STM32的时钟系统 相较于51单片机,stm32的时钟系统可以说是非常复杂了,我们现在看下面的一张图:   上图说明了时钟的走向,是从左至右的从时钟源一步步的分配给外设时钟.需要注意的是,上图左侧一 ...

  5. 洛谷 P4867 Gty的二逼妹子序列

    链接: P4867 题意: 给出长度为 \(n(1\leq n\leq 10^5)\) 的序列 \(s\),保证\(1\leq s_i\leq n\).有 \(m(1\leq m\leq 10^6)\ ...

  6. Python hashlib Unicode-objects must be encoded before hashing

    Python2中没有这个问题 python3中 hashlib.md5(data)函数中data 参数的类型应该是bytes hash前必须把数据转换成bytes类型 Python 2.7.12 (d ...

  7. [命令行]Mysql 导入 excel 文件

    将 excel 表格中的数据批量导入数据库中 将要导入的表删除字段名,只留下要导入的数据. 将文件另存为 *.csv格式,可以用记事本打开(实际上就是标准的逗号分隔的数据 进入mysql,输入命令,打 ...

  8. ReplacingMergeTree:实现Clickhouse数据更新

    摘要:Clickhouse作为一个OLAP数据库,它对事务的支持非常有限.本文主要介绍通过ReplacingMergeTree来实现Clickhouse数据的更新.删除. 本文分享自华为云社区< ...

  9. 四种 AI 技术方案,教你拥有自己的 Avatar 形象

    大火的 Avatar到底是什么 ? 随着元宇宙概念的大火,Avatar 这个词也开始越来越多出现在人们的视野.2009 年,一部由詹姆斯・卡梅隆执导 3D 科幻大片<阿凡达>让很多人认识了 ...

  10. 计算机网络漫谈之IP与子网掩码

    通过之前的介绍,我们现在已有的概念是任何一台计算机如果需要接入互联网,都会分配到一个IP地址.这个地址分成两个部分,前一部分代表网络,后一部分代表主机.比如,IP地址172.16.254.1,这是一个 ...