19_04_19校内训练[Game]
题意
给出n,等概率地生成一个1~n的数列。现在有n个人从左到右站成一排,每个人拿有当前数列位置上的数字,并且一开始都不知道数字是多少(但知道n是多少)。从左到右让每个人进行如下选择:
1.选择保留自己的卡片,让所有人知道这个卡片上面的数字,并且走到等待区中。第一个人只能进行该选择。
2.选定等待区中的一个人,将自己的卡片与其交换,然后自己带着交换后的卡片退出游戏。等待区中的那个人会让所有人知道这个卡片上面的数字。
假如每个人都绝顶聪明,都想最大化自己的数字,求出等待区中人数的期望。n≤1E15,保留10位有效数字。
例如:E(2)=1.500000000
一开始的数列为[2,1],一开始所有人不知道自己的数字。第一个人翻开后给所有人看,第二个人会知道自己只会是1,就和第一个人交换卡片,最后第一个人数字为1,第二个人数字为1,等待区中还有1人。
一开始的数列为[1,2],一开始所有人不知道自己的数字。第一个人翻开后给所有人看,第二个人会知道自己是2,不交换,最后第一个人数字为1,第二个人数字为2,等待区中还有2人。
思考
不错的题目。手算n≤3发现是个调和级数,现在来证明。
首先,若等待区最大的数字为k,且数字构成了1~k的排列,下一个必然会走到等待区;否则,下一个会和等待区中最大的数字进行交换。
1.构成了1~k的排列:若和1~k的数字进行交换,那结果必然会小于等于k,而下一个人以及下一个人之后手上的数字显然大于k,所以只会进入等待区。
2.构不成1~k的排列:设最小未出现的数字为p,下一个人的数字为m,有两种情况:
1.m=p。若进入等待区,不会再有人来与自己交换数字,因此结果不会变优。
2.m>p。若进入等待区,从最后一个人向前考虑。若一个人知道自己数字不交换会变劣,他必然会选择前面的人进行交换;前面的人知道自己被交换会变劣,就会先和前面的人交换……直到p出现。这样一来,m仍然会被替换为p。
综上,下一人一定会选择交换。
这样考虑从n-1转移到n。从n-1的排列中插入n,若n在末尾,则有(n-1)!种可能,等待区中的人数会多1;若n不在末尾,原先形成连续的排列在经过n后仍会形成连续的排列,不是连续的排列仍不是连续的排列,对应到了n-1中,则有(n-1)*(n-1)!中可能。
故E(n)=E(n-1)+1/(n),调和级数。
19_04_19校内训练[Game]的更多相关文章
- [4.14校内训练赛by hzwer]
来自FallDream的博客,未经允许,请勿转载,谢谢. hzwer又出丧题虐人 4道noi.... 很奇怪 每次黄学长出题总有一题我做过了. 嗯题目你们自己看看呗 好难解释 ----- ...
- [2017.4.7校内训练赛by hzwer]
来自FallDream的博客,未经允许,请勿转载,谢谢. 报警啦.......hzwer又出丧题虐人啦..... 4道ctsc...有一道前几天做过了,一道傻逼哈希还wa了十几次,勉强过了3题..我好 ...
- [3.24校内训练赛by hzwer]
来自FallDream的博客,未经允许,请勿转载,谢谢. ----------------------------------------------------------------------- ...
- 19_04_02校内训练[deadline]
题意 给出一个二分图,左边为A集合,右边为B集合,要求把A集合中每一个点染为黑白两色中的一种,B集合中的颜色已定.染色后对于原本相邻且颜色相同的点,建立新的二分图,即得到了两个新的二分图,它们是独立的 ...
- 平面图转对偶图&19_03_21校内训练 [Everfeel]
对于每个平面图,都有唯一一个对偶图与之对应.若G‘是平面图G的对偶图,则满足: G'中每一条边的两个节点对应着G中有公共边的面,包括最外部无限大的面. 直观地讲,红色标出来的图就是蓝色标出的图的对偶图 ...
- fzyzojP3979 -- [校内训练20180914]魔法方阵
原题见CF632F https://blog.csdn.net/Steaunk/article/details/80217764 这个比较神仙了 点边转化, 把max硬生生转化成了路径最大值,再考虑所 ...
- fzyzojP3580 -- [校内训练-互测20180315]小基的高智商测试
题目还有一个条件是,x>y的y只会出现一次(每个数直接大于它的只有一个) n<=5000 是[HNOI2015]实验比较 的加强版 g(i,j,k)其实可以递推:g(i,j,k)=g(i- ...
- fzyzojP3372 -- [校内训练20171124]博弈问题
对于每个点都要答案 还是异或 trie树合并石锤了 朴素枚举是O(n^2*17)的 怎么办呢? 我们发现合并的时候,一些部分的trie的子树还是不变的 改变的部分也就是合并的复杂度可以接受 鉴于大部分 ...
- fzyjojP2963 -- [校内训练20161227]疫情控制问题
(题干中的废话已经划去) dp显而易见 收益为负数的可以直接扔掉不管.不要一定更优 子串问题,考虑SAM 建立广义SAM 尝试匹配,匹配到的位置的parent树祖先如果有完整的串,那么可以从这个串转移 ...
随机推荐
- shell脚本-工作练习篇
瞎扯时间 人的惰性真的很难去戒掉,每天工作下班回家后,只想瘫倒在床上,玩玩手游,刷刷抖音,甚至看看无聊至极的“爽文”,对于学习.看书啥的,完全提不起兴趣,也许正是因为如此,我才显得这么平庸而无趣吧. ...
- bat实现往hosts文件追加内容
做个笔记. @echo off ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::: ...
- pip安装scrapy失败:twisted安装失败 error: Microsoft Visual C++ 14.0 is required.. 解决方法
在使用pip install scrapy命令安装scrapy框架时,Twisted出现安装错误.如下: building 'twisted.test.raiser' extension error: ...
- windows下共享文件夹在Linux下打开
①首先在Windows下创建一个准备用来共享用的文件夹 ②在虚拟机下选择第一步创建的文件夹为共享文件夹 ③在虚拟机shell命令框下输入 cd /mnt/sgfs 回车进入共享文件夹. 备注:其他细 ...
- JS的Date对象、Math、包装类
Date对象 在JS使用Date对象来表示时间 当前时间 var d = new Date(); 指定时间 格式:月/日/年 时:分:秒 var e = new Date("02/16/ ...
- ng/cli uses yarn as the package manager
Switch to working directory Excuting the following command ng config cli.packageManager yarn
- Linux下“/”和“~”的区别
在linux中,”/“代表根目录,”~“是代表目录.Linux存储是以挂载的方式,相当于是树状的,源头就是”/“,也就是根目录. 而每个用户都有”家“目录,也就是用户的个人目录,比如root用户的”家 ...
- 合并K个排序链表(java实现)
题目: 合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: ...
- Jenkins 配置邮件通知步骤
Jenkins 配置邮件通知前言 可以在Jenkins 中配置邮件通知,比如在构建失败时发送邮件通知项目组来及时修复问题. Jenkins 邮件通知功能的插件主要包括: Mailer Plugin ( ...
- 【Code Tools】Java微基准测试工具JMH之中级篇
一.JMH中的基本概念 1)Mode Mode 表示 JMH 进行 Benchmark 时所使用的模式.通常是测量的维度不同,或是测量的方式不同.目前 JMH 共有四种模式: 1.Throughput ...