题意

给出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]的更多相关文章

  1. [4.14校内训练赛by hzwer]

    来自FallDream的博客,未经允许,请勿转载,谢谢. hzwer又出丧题虐人 4道noi....        很奇怪 每次黄学长出题总有一题我做过了. 嗯题目你们自己看看呗 好难解释 ----- ...

  2. [2017.4.7校内训练赛by hzwer]

    来自FallDream的博客,未经允许,请勿转载,谢谢. 报警啦.......hzwer又出丧题虐人啦..... 4道ctsc...有一道前几天做过了,一道傻逼哈希还wa了十几次,勉强过了3题..我好 ...

  3. [3.24校内训练赛by hzwer]

    来自FallDream的博客,未经允许,请勿转载,谢谢. ----------------------------------------------------------------------- ...

  4. 19_04_02校内训练[deadline]

    题意 给出一个二分图,左边为A集合,右边为B集合,要求把A集合中每一个点染为黑白两色中的一种,B集合中的颜色已定.染色后对于原本相邻且颜色相同的点,建立新的二分图,即得到了两个新的二分图,它们是独立的 ...

  5. 平面图转对偶图&19_03_21校内训练 [Everfeel]

    对于每个平面图,都有唯一一个对偶图与之对应.若G‘是平面图G的对偶图,则满足: G'中每一条边的两个节点对应着G中有公共边的面,包括最外部无限大的面. 直观地讲,红色标出来的图就是蓝色标出的图的对偶图 ...

  6. fzyzojP3979 -- [校内训练20180914]魔法方阵

    原题见CF632F https://blog.csdn.net/Steaunk/article/details/80217764 这个比较神仙了 点边转化, 把max硬生生转化成了路径最大值,再考虑所 ...

  7. fzyzojP3580 -- [校内训练-互测20180315]小基的高智商测试

    题目还有一个条件是,x>y的y只会出现一次(每个数直接大于它的只有一个) n<=5000 是[HNOI2015]实验比较 的加强版 g(i,j,k)其实可以递推:g(i,j,k)=g(i- ...

  8. fzyzojP3372 -- [校内训练20171124]博弈问题

    对于每个点都要答案 还是异或 trie树合并石锤了 朴素枚举是O(n^2*17)的 怎么办呢? 我们发现合并的时候,一些部分的trie的子树还是不变的 改变的部分也就是合并的复杂度可以接受 鉴于大部分 ...

  9. fzyjojP2963 -- [校内训练20161227]疫情控制问题

    (题干中的废话已经划去) dp显而易见 收益为负数的可以直接扔掉不管.不要一定更优 子串问题,考虑SAM 建立广义SAM 尝试匹配,匹配到的位置的parent树祖先如果有完整的串,那么可以从这个串转移 ...

随机推荐

  1. golang获取文件的md5

    直接展示代码 func md5sum(filepath string) (string, error) { f, err := os.Open(filepath) if err != nil { st ...

  2. win10 右键添加“在此打开powershell”

    计算机\HKEY_CLASSES_ROOT\Directory\Background\shell\ 上图中的字符串,直接去下图中的位置复制过来就好

  3. P2495 [SDOI2011]消耗战

    思路 虚树上DP 虚树相当于一颗包含了所有询问的关键点信息的树,包含的所有点只有询问点和它们的LCA,所以点数是\(2k\)级别的,这样的话复杂度就是\(O(\sum k)\),复杂度就对了 虚树重点 ...

  4. CentOS7攻克日记(三) —— 安装Python3.6

    我是在EVERNOTE上面写的,本来格式是有代码段的,结果复制上来就没有了,所以会有一点乱,我就不调整了   我主要安装的是python环境,这一篇主要解决一下python的问题.在这里给个建议,安装 ...

  5. jquery延迟加载(懒加载)插件

    Lazy Load 是一个用 JavaScript 编写的 jQuery 插件. 它可以延迟加载长页面中的图片. 在浏览器可视区域外的图片不会被载入, 直到用户将页面滚动到它们所在的位置. 这与图片预 ...

  6. swift 有道 翻译文档(2 条件语句 循环语句)

    控制流使用if和switch来创建条件语句,使用for-in.while和repeat-while来创建循环.条件或循环变量的括号是可选的.身体周围需要支撑. let individualScores ...

  7. laravel 框架的 csrf

    由于 laravel 框架自带 csrf 防护, 也就是通过中间件验证请求的 token, 所以 form 表单必须如下设置才可以正常提交, 否则会 419: <form method=&quo ...

  8. vue-router 中踏过的坑

    1.做完页面滚动,然后再加上路由,发现路由一直跳转不了,经历千辛万苦才发现是BScroll没有配置click:true,当看过文档时心里一万只草泥马奔腾而过,我预感到成长道路上还有多少坑在等着我. 2 ...

  9. Linux之磁盘信息查看

    一.磁盘情况查询 1.查看磁盘整体情况 命令:df 参数: -a:列出所有的文件系统,包括系统特有的/proc等文件系统 -k:以KB的容量显示各文件系统 -m:以MB的容量显示各文件系统 -h:以人 ...

  10. ubuntu 创建文件夹和删除文件

    创建 名为docker的文件夹 :mkdir docker 删除 名为docker的文件夹 : rm docker 创建名为docker-compose.yml的文件 : vi docker-comp ...