本文将同步发布于:

题目

题目链接:HDU-4015 Mario and MushroomsVjudge HDU-4015

题意简述

马里奥初始只有 \(1\) 点血。

有两种蘑菇,一种是好蘑菇,一种是坏蘑菇;好的吃了会增加 \(1\) 点血,坏蘑菇吃了会减少 \(m\) 点血;

共有 \(mk+1\) 个好蘑菇和 \(k\) 个坏蘑菇,请问有多少种蘑菇的排列方式使得马里奥在按顺序吃下蘑菇后的任意时刻血量均 \(\geq 1\)。

求答案与总的排列个数的比值,即马里奥的存活概率。

两个排列不同,当且仅当存在至少一个位置蘑菇的种类不同。

题解

Raney 引理

不难发现,如果马里奥可以存活,那么最后吃完所有蘑菇,一定只剩下 \(1\) 点血。

不难考虑到 Raney 引理,即对于一个总和为 \(1\) 的整数序列,它的循环同构序列中有且仅有一个满足前缀和数组均大于 \(0\)。

证明:

具体地,我们考虑在平面直角坐标系 \(xOy\) 中绘制前缀和数列图像(以 \(a=[1,3,-4,1]\) 为例)。

作一条斜率为 \(\frac{1}{a+b}\) 的直线,将其平移到与图像下相切。

  • 充分性:不难发现,如果我们以切点为循环位移的终点(它后一个点为数列的第一项),构造出来的数列一定符合条件;
  • 必要性:如果不相切,必定存在交点,考虑到数列中都是整数,交点一定满足纵坐标小于等于切点,前缀和小于等于零,不可能。

Raney 引理得证。

圆排列与计数

由 Raney 得知,所有蘑菇的一个圆排列一定对应恰好一个合法的排列,因此我们要求解的实际上就是圆排列个数与总排列个数的比值。

根据重复元素排列公式:

总的排列个数 \(p\) 满足

\[p=\frac{(k+mk+1)!}{k!(mk+1)!}
\]

根据圆排列公式:

圆排列个数 \(q\) 满足

\[q=\frac{p}{k+mk+1}
\]

因此,答案 \(\texttt{ans}\) 满足

\[\texttt{ans}=\frac{q}{p}=\frac{1}{k+mk+1}
\]

参考代码

#include<cstdio>
using namespace std;
#define reg register
typedef long long ll; int main(void){
int t;
scanf("%d",&t);
reg int Case=0;
while(t--){
static int m,k;
scanf("%d%d",&m,&k);
printf("Case #%d: %.8lf\n",++Case,1.0/(k+m*k+1));
}
return 0;
}

「题解」HDU-4015 Mario and Mushrooms的更多相关文章

  1. 「题解」「美团 CodeM 资格赛」跳格子

    目录 「题解」「美团 CodeM 资格赛」跳格子 题目描述 考场思路 思路分析及正解代码 「题解」「美团 CodeM 资格赛」跳格子 今天真的考自闭了... \(T1\) 花了 \(2h\) 都没有搞 ...

  2. 「题解」「HNOI2013」切糕

    文章目录 「题解」「HNOI2013」切糕 题目描述 思路分析及代码 题目分析 题解及代码 「题解」「HNOI2013」切糕 题目描述 点这里 思路分析及代码 题目分析 这道题的题目可以说得上是史上最 ...

  3. 「题解」JOIOI 王国

    「题解」JOIOI 王国 题目描述 考场思考 正解 题目描述 点这里 考场思考 因为时间不太够了,直接一上来就着手暴力.但是本人太菜,居然暴力爆 000 ,然后当场自闭- 一气之下,发现对 60pts ...

  4. 「题解」:[loj2763][JOI2013]现代豪宅

    问题 A: 现代豪宅 时间限制: 1 Sec  内存限制: 256 MB 题面 题目描述 (题目译自 $JOI 2013 Final T3$「現代的な屋敷」) 你在某个很大的豪宅里迷路了.这个豪宅由东 ...

  5. 「题解」:$Six$

    问题 A: Six 时间限制: 1 Sec  内存限制: 512 MB 题面 题面谢绝公开. 题解 来写一篇正经的题解. 每一个数对于答案的贡献与数本身无关,只与它包含了哪几个质因数有关. 所以考虑二 ...

  6. 「题解」:$Smooth$

    问题 A: Smooth 时间限制: 1 Sec  内存限制: 512 MB 题面 题面谢绝公开. 题解 维护一个队列,开15个指针,对应前15个素数. 对于每一次添加数字,暴扫15个指针,将指针对应 ...

  7. 「题解」:Kill

    问题 A: Kill 时间限制: 1 Sec  内存限制: 256 MB 题面 题面谢绝公开. 题解 80%算法 赛时并没有想到正解,而是选择了另一种正确性较对的贪心验证. 对于每一个怪,我们定义它的 ...

  8. 「题解」:y

    问题 B: y 时间限制: 1 Sec  内存限制: 256 MB 题面 题面谢绝公开. 题解 考虑双向搜索. 定义$cal_{i,j,k}$表示当前已经搜索状态中是否存在长度为i,终点为j,搜索过边 ...

  9. 「题解」:x

    问题 A: x 时间限制: 1 Sec  内存限制: 256 MB 题面 题面谢绝公开. 题解 赛时想到了正解并且对拍了很久.对拍没挂,但是评测姬表示我w0了……一脸懵逼. 不难证明,如果对于两个数字 ...

随机推荐

  1. UVA10870递推关系(矩阵乘法)

    题意:       给以个递推f(n) = a1 f(n - 1) + a2 f(n - 2) + a3 f(n - 3) + ... + ad f(n - d), for n > d.,给你n ...

  2. MS06-040漏洞研究(下)【转载】

    课程简介 经过前两次的分析,我们已经对Netapi32.dll文件中所包含的漏洞成功地实现了利用.在系统未打补丁之前,这确实是一个非常严重的漏洞,那么打了补丁之后,这个动态链接库是不是就安全了呢?答案 ...

  3. Windows Pe 第三章 PE头文件(上)

    第三章  PE头文件 本章是全书重点,所以要好好理解,概念比较多,但是非常重要. PE头文件记录了PE文件中所有的数据的组织方式,它类似于一本书的目录,通过目录我们可以快速定位到某个具体的章节:通过P ...

  4. 安装和简单使用apidoc

    安装nodejs 参考链接 安装apidoc 参考链接 使用 https://www.bilibili.com/video/BV1MW411Q7g4 https://www.bilibili.com/ ...

  5. jenkins 下使用ansible 跨服务器控制操作

    例如: A服务器地址:172.16.1.203 B服务器地址:172.16.1.204 当jenkins 在A 服务器并且用户aa,  控制B 服务器的用户bb的操作 (1)B服务器 用ssh-key ...

  6. Educational Codeforces Round 105 (Rated for Div. 2)

    A. ABC String 题目:就是用'('和')'来代替A,B,C并与之对应,问是不是存在这样的对应关系使得'('和')'正好匹配 思路:第一个和最后一个字母是确定的左括号或者是右括号,这样就还剩 ...

  7. 在ActiveMQ中使用SingleConnectionFactory遇到的坑

    我们在生产环境使用了ActiveMQ作为消息中间件,消息中间件连接到数据库对消息进行持久化. 最近发生了一个奇怪的事情,消费者端的生产日志总是报如下错误: The JMS connection has ...

  8. 技能Get·将浏览器已安装程序打包

    阅文时长 | 0.51分钟 字数统计 | 820字符 主要内容 | 1.前言&环境说明&预备知识 2.详细步骤 3.声明与参考资料 『技能Get·将浏览器已安装程序打包』 编写人 | ...

  9. Envoy:开启访问日志,access_log

    access_log: - name: envoy.listener.accesslog typed_config: "@type": type.googleapis.com/en ...

  10. [刷题] 24 Swap Nodes in Paris

    要求 给定一个链表,对于每两个相邻的节点,交换其位置 示例 1->2->3->4->NULL 2->1->4->3->NULL 实现 1 struct ...