火山喷发对所有附近的生物具有毁灭性的影响。在本题中,我们希望用数值来模拟这一过程。

在环境里有 nnn 个生物分别具有 A1,A2,⋯,An​​点生命值,一次火山喷发总计 M轮,每轮造成 1点伤害,等概率地分给所有存活的生物,即如果目前有 K 个活着的生物,每个生物受到这点伤害的概率是 1/K​​。如果一个生物的生命值减为 0,它会立即死去,此后都不会再占用受到伤害的概率。如果没有生物存活,那么将没有生物会受到伤害。

现在你的任务是,给定 n,M 和全部生物的生命值,问每个生物火山喷发后依然存活的概率。

输入格式
第一行两个正整数 n 和 M。
第二行 n 个正整数 A1,...,An。

输出格式
n行,第 i 行一个数表示第 i 个生物存活下来的概率,保留小数点后六位。

数据范围与约定
对于 10% 的数据 N=1。
对于 30% 的数据 N=2。
对于全部数据 N≤4,M≤120,A​i​​≤50。

样例输入1

1 2
1

样例输出1

0.000000

样例输入2

3 15
2 12 2

样例输出2

0.001684
0.996632
0.001684
f[i][j][k][p]表示生命值为i,j,k,p时的概率

那么我们枚举轮数和4个生物的HP,就可以转移

但是O(120*50^4)显然超时

但我们知道轮数和3个生物的HP,显然可以推出第四个

所以O(120*50^3)就够了

还有要注意枚举的HP对应的损失HP必须等于轮数

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
double cnt,f[][][][],ans;
int n,a[],m;
int main()
{int l,i,j,k,p;
cin>>n>>m;
for (i=;i<=n;i++)
scanf("%d",&a[i]);
m=min(m,a[]+a[]+a[]+a[]);
f[a[]][a[]][a[]][a[]]=;
for (l=;l<=m;l++)
{
for (i=;i<=a[];i++)
{
for (j=;j<=a[];j++)
{
for (k=;k<=a[];k++)
{
int p=a[]-(l-(a[]-i)-(a[]-j)-(a[]-k));
if (a[]-i+a[]-j+a[]-p+a[]-k!=l) continue;
if (p<||p>a[]) continue;
if (f[i][j][k][p]==) continue;
cnt=;
if (i) cnt++;if (k) cnt++;
if (j) cnt++;if (p) cnt++;
if (cnt==) continue;
if (i) f[i-][j][k][p]+=f[i][j][k][p]/cnt;
if (j) f[i][j-][k][p]+=f[i][j][k][p]/cnt;
if (k) f[i][j][k-][p]+=f[i][j][k][p]/cnt;
if (p) f[i][j][k][p-]+=f[i][j][k][p]/cnt;
}
}
}
}
for (i=;i<=n;i++)
{ans=;
if (i==)
for (j=;j<=a[];j++)
for (k=;k<=a[];k++)
for (p=;p<=a[];p++)
if (a[]+a[]-j+a[]-k+a[]-p==m)
ans+=f[][j][k][p];
if (i==)
for (j=;j<=a[];j++)
for (k=;k<=a[];k++)
for (p=;p<=a[];p++)
if (a[]-j+a[]+a[]-k+a[]-p==m)
ans+=f[j][][k][p];
if (i==)
for (j=;j<=a[];j++)
for (k=;k<=a[];k++)
for (p=;p<=a[];p++)
if (a[]-j+a[]-k+a[]+a[]-p==m)
ans+=f[j][k][][p];
if (i==)
for (j=;j<=a[];j++)
for (k=;k<=a[];k++)
for (p=;p<=a[];p++)
if (a[]-j+a[]-k+a[]-p+a[]==m)
ans+=f[j][k][p][];
printf("%.6lf\n",-ans);
}
}

计蒜客 NOIP模拟赛(3) D1T1火山喷发的更多相关文章

  1. 计蒜客NOIP模拟赛(2) D1T1邻家男孩

    凡是一个具有领导力的孩子.现实生活中他特别喜欢玩一个叫做 UNO 的纸牌游戏,他也总是带着其他小朋友一起玩,然后战胜他们.慢慢地,他厌倦了胜利,于是准备发明一种新的双人纸牌游戏. 初始时,每个人手中都 ...

  2. 计蒜客NOIP模拟赛5 D1T1 机智的 AmyZhi

    那年一个雨季,AmyZhi 在校门外弯身买参考书. 这时 SiriusRen 走过来,一言不合甩给她一道“自认为”很难的题: --------------- 给你一个数字 NN(NN 的范围是 11  ...

  3. 计蒜客NOIP模拟赛4 D1T1 小X的质数

    小 X 是一位热爱数学的男孩子,在茫茫的数字中,他对质数更有一种独特的情感.小 X 认为,质数是一切自然数起源的地方. 在小 X 的认知里,质数是除了本身和 1以外,没有其他因数的数字. 但由于小 X ...

  4. 计蒜客NOIP模拟赛6 D1T1Diamond-square

    Diamond-square 算法是一种能够用于生成噪声的算法,现在我们考虑这个算法的一个变种. 你有一个 2^n\times 2^n2​n​​×2​n​​ 的网格,一共有 (2^n+1)^2(2​n ...

  5. 计蒜客NOIP模拟赛4 D2T1 鬼脚图

    鬼脚图,又称画鬼脚,在日本称作阿弥陀签,是一种经典游戏,也是一种简易的决策方法,常常用来抽签或决定分配组合. 下图就是一张鬼脚图,其包含若干条竖线和若干条横线.请注意,横线只能水平连接相邻的两条竖线, ...

  6. 计蒜客NOIP模拟赛4 D2T2 跑步爱天天

    YOUSIKI 在 noip2016 的一道<天天爱跑步>的题爆零后,潜心研究树上问题,成为了一代大师,于是皮皮妖为了测验他,出了一道题,名曰<跑步爱天天>. 有一个以 1 为 ...

  7. 计蒜客NOIP模拟赛4 D1T3 小X的佛光

    小 X 是远近闻名的学佛,平日里最喜欢做的事就是蒸发学水. 小 X 所在的城市 X 城是一个含有 N 个节点的无向图,同时,由于 X 国是一个发展中国家,为了节约城市建设的经费,X 国首相在建造 X ...

  8. 计蒜客NOIP模拟赛4 D1T2小X的密室

    小 X 正困在一个密室里,他希望尽快逃出密室. 密室中有 N 个房间,初始时,小 X 在 1 号房间,而出口在 N 号房间. 密室的每一个房间中可能有着一些钥匙和一些传送门,一个传送门会单向地创造一条 ...

  9. 计蒜客NOIP模拟赛D2T3 数三角形

    刚刚上高中的洁洁在学习组合数学的过程中遇到一道麻烦的题目,她希望你能帮助她解决.给定一张无向完全图 G,其中大部分边被染成蓝色,但也有一些边被染成红色或者绿色.现在,洁洁需要给这张图的多样性进行打分. ...

随机推荐

  1. 新手使用mac上的textedit写HTML时遇到的问题及解决办法

    刚开始在mac上学习HTML,总结一下遇到的问题和解决办法 问题:使用textedit编写html,在网页上却仍然显示的是代码. 解决办法: 打开textedit后打开文本编辑 选择偏好设置 按如图所 ...

  2. Linux下ip配置与网络重启

    ip配置 //以下ip配置重启失效 sudo ifconfig 192.168.1.1 sudo ifconfig 192.168.1.1 netmask 255.255.255.0 网络重启 //关 ...

  3. AWS中的Internet 网关

    nternet 网关是一种横向扩展.支持冗余且高度可用的 VPC 组件,可实现 VPC 中的实例与 Internet 之间的通信.因此它不会对网络流量造成可用性风险或带宽限制. Internet 网关 ...

  4. C# 使用 ffmpeg 进行音频转码

    先放一下 ffmpeg 的官方文档以及下载地址: 官方文档:http://ffmpeg.org/ffmpeg.html 下载地址:http://ffmpeg.org/download.html 用 f ...

  5. 裸辞两个月,海投一个月,从Android转战Web前端的求职之路

    前言 看到这个标题的童鞋,可能会产生两种想法: 想法一:这篇文章是标题党 想法二:Android开发越来越不景气了吗?前端越来越火了吗? 我一向不喜欢标题党,标题中的内容是我的亲身经历.我是2016年 ...

  6. React Native学习(九)—— 使用Flexbox布局

    本文基于React Native 0.52 Demo上传到Git了,有需要可以看看,写了新内容会上传的.Git地址 https://github.com/gingerJY/React-Native-D ...

  7. SpringBoot的配置文件加载顺序和使用方式

    1.bootstrap.properties bootstrap.properties 配置文件是由"根"上下文优先加载,程序启动之初就感知 如:Spring Cloud Conf ...

  8. Docker学习笔记 - Docker容器的日志

    docker logs  [-f]  [-t]  [--tail]  容器名 -f -t --tail="all" 无参数:返回所有日志 -f 一直跟踪变化并返回 -t 带时间戳返 ...

  9. Linux实战案例(2)实例讲解使用软连接的场景和过程

    =================================== 使用场景:使用软连接简化版本切换动作 进入操作目录, cd /opt/modules/ ==================== ...

  10. 从Mybatis源码理解jdk动态代理默认调用invoke方法

    一.背景最近在工作之余,把开mybatis的源码看了下,决定自己手写个简单版的.实现核心的功能即可.写完之后,执行了一下,正巧在mybatis对Mapper接口的动态代理这个核心代码这边发现一个问题. ...