洛谷 P3802 小魔女帕琪
题目背景
从前有一个聪明的小魔女帕琪,兴趣是狩猎吸血鬼。
帕琪能熟练使用七种属性(金、木、水、火、土、日、月)的魔法,除了能使用这么多种属性魔法外,她还能将两种以上属性组合,从而唱出强力的魔法。比如说为了加强攻击力而将火和木组合,为了掩盖弱点而将火和土组合等等,变化非常丰富。
题目描述
现在帕琪与强大的夜之女王,吸血鬼蕾咪相遇了,夜之女王蕾咪具有非常强大的生命力,普通的魔法难以造成效果,只有终极魔法:帕琪七重奏才能对蕾咪造成伤害。帕琪七重奏的触发条件是:连续释放的7个魔法中,如果魔法的属性各不相同,就能触发一次帕琪七重奏。
现在帕琪有7种属性的能量晶体,分别为a1,a2,a3,a4,a5,a6,a7(均为自然数),每次释放魔法时,会随机消耗一个现有的能量晶体,然后释放一个对应属性的魔法。
现在帕琪想知道,她释放出帕琪七重奏的期望次数是多少,可是她并不会算,于是找到了学OI的你
输入输出格式
输入格式:
一行7个数字,a1,a2,a3,a4,a5,a6,a7
输出格式:
一个四舍五入保留3位的浮点数
输入输出样例
输入样例#1:
1 1 1 1 1 1 1
输出样例#1:
1.000
说明
样例说明:
显然一定会触发一次帕琪七重奏
数据范围:
对于30%的测试点,a1+a2+a3+a4+a5+a6+a7<=10
对于100%的测试点,a1+a2+a3+a4+a5+a6+a7<=10^9
by-szc
好题
首先,对于这种没有给出权值或者权值为1的题求期望,根据期望的定义式:期望=$sum pi*xi$
这样的题没有实际上就是求概率
定义:tot=sum_{i=1}^7 ai
对于每一个元素,它可以被作为释放元素的概率为(a1/tot)*(a2/(tot-1))*(a3/(tot-2))*...*(a7/(tot-6))$=$a[i]/(tot-i+1)
这道题目与释放的顺序无关,所以还需要乘上7的阶乘,也就是5040
此时,我们还遗漏了一个条件:所有的元素都必须用上,
根据排列的性质,每一个元素都可以作为首项元素,只要元素的个数不满7
所以我们需要在结尾乘(tot-6)
1 #include<cstdio>
2 #include<cstring>
3 #include<cmath>
4 #include<algorithm>
5 using namespace std;
6 inline int read()
7 {
8 char c=getchar(); int flag=1,x=0;
9 while(c<'0'||c>'9') {if(c=='-') flag=-1;c=getchar();}
10 while(c>='0'&&c<='9')x=x*10+c-48,c=getchar();return x*flag;
11 }
12 double a[15],tot=0;
13 int main()
14 {
15 for(int i=1;i<=7;i++)
16 a[i]=read(),tot+=a[i];
17 if(tot<=6)
18 {
19 printf("0.000");
20 return 0;
21 }
22 double ans=5040.0;
23 for(int i=1;i<=7;i++)
24 ans=ans*(a[i]/(tot-i+1));
25 ans=ans*(tot-6);
26 printf("%.3lf",ans);
27 return 0;
28 }
- es6 Symbol
- 使用Windbg和SoS扩展调试分析.NET程序
- WordPress 路径相关函数总结(四):路径相关常量
- .net和java互操作
- WordPress 路径相关函数总结(三):插件路径相关函数
- 修改WordPress 搜索结果页面url 形式,安全有保障
- C# Enum设计和使用的相关技巧
- 小程序如何利用更低成本获得高流量?
- 使用System.Net.Mail通过gmail发送电子邮件
- 删除 WordPress 导航菜单的多余 CSS 选择器(id或class)
- es6 对象的扩展
- 自定义WordPress 标签云小工具相关参数
- 检查.NET程序平台目标(Platform Target)工具CorFlags
- 哪些行业最适合抢驻小程序?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 力扣:地下城游戏,手把手教你做困难题
- RN布局
- 学会MySQL主从复制读写分离,看这篇就够了
- Canal+Kafka实现MySQL与Redis数据同步
- 超详细canal入门,看这篇就够了
- 详细讲解!RabbitMQ防止数据丢失
- 详细讲解!从秒杀聊到ZooKeeper分布式锁
- 正确使用 wait/notify/notify方法以及源码解析
- 秒杀商品超卖事故:Redis分布式锁请慎用!
- 3D开发是一个生态,ThingJS支持js,css,json,html外部资源引用
- 手把手教你实现xxl-job分布式任务调度平台搭建
- 在 vscode 中 debugger 调试
- MongoDB 的安装
- 一次opencanary自定义实践
- 从0到1编写一个Xposed Module :Anti Screenshot