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. 【数据结构与算法Python版学习笔记】图——最短路径问题、最小生成树

    最短路径问题 概念 可以通过"traceroute"命令来跟踪信息传送的路径: traceroute www.lib.pku.edu.cn 可以将互联网路由器体系表示为一个带权边的 ...

  2. [软工作业]-软件案例分析-CSDN

    [软工作业]-软件案例分析-CSDN(app) 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业-软件案例分析 我在这个课程的目标是 ...

  3. Noip模拟57 2021.9.20

    规律总结:联考必爆炸 T1 2A 没$A$掉的大水题,但是是真的不知道$000$前面的$00$也算先导$0$,以后要长记性,这种东西不能再错了 再打三遍: $000$前面的$00$也算先导$0$ $0 ...

  4. 『学了就忘』Linux基础 — 4、VMware安装

    目录 1.VMware介绍 2.VMware主要特点 3.VMware建议配置 4.VMware安装 1.VMware介绍 VMware是一个虚拟PC的软件,可以在现有的操作系统上虚拟出一个新的硬件环 ...

  5. USB_ID OTG

    谁知道USB_ID pin 脚的功能意义?是干什么用的?USB 中不就有 VDD,GND,USB+,USB- 并没有USB_ID 的信息呀?检测ID脚状态高低,从而判断为主设备或从设备,otg的时候用 ...

  6. 设计的MOS管三极管简单开关电路驱动能力不够3

    16楼说得非常明白,补充一点,R3如果不要,会有下冲产生.4 Q: Z/ G  G1 s8 Z- } 能解释下为什么会产生过冲吗?9 i, P* D* X) u. t/ b  ^ 让我们这些菜鸟学习学 ...

  7. 转载:10G以太网光口与Aurora接口回环实验

    10G以太网光口与高速串行接口的使用越来越普遍,本文拟通过一个简单的回环实验,来说明在常见的接口调试中需要注意的事项.各种Xilinx FPGA接口学习的秘诀:Example Design.欢迎探讨. ...

  8. prometheus(1)之核心概念

    个人理解:prometheus核心在于 1.prom数据类型的理解 (4钟数据类型 与常用的promQL语法 其实很容易) 2.各种服务发现与正则拼接(服务发现的拼接其实官方定义好的 理解就行) 3. ...

  9. webpack 之js兼容性处理

    webpack 之js兼容性处理 // 用来拼接绝对路径的方法 const {resolve} = require('path') const HtmlWebpackPlugin = require( ...

  10. Vue.js教程 2.体验Vue

    Vue.js教程 2.体验Vue <!DOCTYPE html> <html lang="en"> <head> <meta charse ...