本文将同步发布于:

题目

题目链接: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. JDBC往数据库里插入数据

    首先还是一个工具类 插入数据

  2. Webpack5构建速度提升令人惊叹,早升级早受益

    为什么要升级? webpack4用的好好的,运行稳定,为什么要升级到webpack5, 每次升级,都要经历一场地震,处理许多loader和plugin API的破坏性改变. 请给我们一个充分的升级理由 ...

  3. Asp.NetCore Web开发之Nlog日志配置

    接着讲基于ASP .net Core 的web开发,这节主要讲一下如何使用和配置Nlog进行日志记录. 日志在开发中的作用是很重要的,使用日志,程序出了错误可以及时捕获并记录下来,开发人员可以通过日志 ...

  4. Java反射机制以及动态代理

    Java反射机制以及动态代理 Java反射机制 含义与功能 Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类 ...

  5. 面试题:ArrayList、LinkedList、Vector三者的异同?

    面试题:ArrayList.LinkedList.Vector三者的异同? 同:三个类都是实现了List接口(Collection的子接口之一),存储数据的特点相同:存储有序的.可重复的数据不同: * ...

  6. opencv打开摄像头获取视频程序

    // // main.cpp // opencv3 // // Created by PKU on 14-9-16. // Copyright (c) 2014年 PKU. All rights re ...

  7. NABCD-name not found

    项目 内容 课程 2020春季计算机学院软件工程(罗杰 任健) 作业要求 团队项目选择 项目名称 FOTT 项目内容 在OCR-Form-Tools开源项目的基础上,扩展功能,支持演示更多的API,例 ...

  8. Docker系列——Grafana+Prometheus+Node-exporter服务器监控平台(一)

    在最近的博文中,都是介绍监控平台的搭建,其实并不难,主要是需要自己动手操作,实践一番就会了. 有天在想,云上的服务器,是不是也可以搭建一个监控平台,所以就捣鼓了一下,不过遗憾的是,使用阿里云开源的插件 ...

  9. 客户端保存token到sessionStorage

    将token保存到客户端的sessionStorage 一.区分localStorage和sessionStorage localStorage是本地持久化存储 sessionStorage是浏览器会 ...

  10. CENTOS7network config文件不能直接bak 必须建立bak目录再bak

    CENTOS7network config文件不能直接bak 必须建立bak目录再bak