FZU - 2103 Bin & Jing in wonderland
FZU - 2103 Bin & Jing in wonderland
题目大意:有n个礼物,每次得到第i个礼物的概率是p[i],一个人一共得到了k个礼物,然后按编号排序后挑选出r个编号最大的礼物。现在给出r个礼物的编号,问能得到这r个礼物的概率。
首先剩下的k-r个礼物中的编号肯定不能大于r个礼物中最小的编号id,我们就根据id把礼物分成两部分,一部分就是编号大于Id的礼物的,另一部分就是剩下的。对于编号大于id的礼物选取的概率,当前剩余nk1个空位,那么就是挑选num[i]个位置来放它,C[nk1][num[i]*pow(p[i],num[i]),然后概率累乘。而剩下的部分,空位有nk2=k-r+num[id]个,小于id是礼物概率之和是pn,那么我们枚举id礼物有i个,小于id的就有nk2-i个,第一个可以在[1,id)内任意取,第二个也是一样。。这部分概率就是pow(pn,nk2-i),那id礼物有i个这种情况下的概率就是C[nk2][i]*pow(p[id],i)*pow(pn,nk2-i),然后概率累加。最后两部分的概率相乘就是最终答案。
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
int num[];
ll C[][];
double p[];
void init()
{
for(int i=;i<=;i++)
{
C[i][]=1ll;
for(int j=;j<=i;j++)
{
if(j<=i/)
C[i][j]=C[i-][j-]+C[i-][j];
else
C[i][j]=C[i][i-j];
}
}
}
double pow(double x,int y)
{
double ans=1.0;
while(y)
{
if(y&)
ans*=x;
x*=x;
y>>=;
}
return ans;
}
int main()
{
init();
int t,n,k,r;
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d",&n,&k,&r);
for(int i=;i<=n;i++)
{
scanf("%lf",&p[i]);
num[i]=;
}
int id=n+,x;
for(int i=;i<=r;i++)
{
scanf("%d",&x);
id=min(id,x);
num[x]++;
}
int nk1=k,nk2=k-r+num[id];
double ans1=1.0,ans2=0.0,pn=0.0;
for(int i=id+;i<=n;i++)
{
if(num[i])
{
ans1*=1.0*C[nk1][num[i]]*pow(p[i],num[i]);
nk1-=num[i];//用了num[i]个位置,减去
}
}
for(int i=;i<id;i++)
pn+=p[i];
for(int i=num[id];i<=nk2;i++)
ans2+=1.0*C[nk2][i]*pow(p[id],i)*pow(pn,nk2-i);
printf("%.6f\n",ans1*ans2);
}
return ;
}
看概率过
FZU - 2103 Bin & Jing in wonderland的更多相关文章
- FZOJ Problem 2103 Bin & Jing in wonderland
...
- Bin & Jing in wonderland(概率,组合数学)
Problem 2103 Bin & Jing in wonderland Accept: 201 Submit: 1048 Time Limit: 1000 mSec Memor ...
- 20140323组队赛 2012福建省第三届ACM省赛题目
A - Solve equation Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u ...
- django使用笔记
django的具体使用可以看官方手册http://djangobook.py3k.cn,这里主要记录使用django中遇到的问题. 1.中文编码问题. 因为我们用到的东西基本上都有中文,在settin ...
- django开发总结:
一,关于setting目录中的“DEBUG” DEBUG=False 把DEBUG从True改成False后就会出现(必需指定404和500错语页面,如上图的目录结构)找不到页面的错误.原因是DEBU ...
- django项目的配置文件settings.py详解
我们创建好了一个Python项目(mysite/)之后,需要在项目中添加模块应用(polls/),在模块应用中添加处理功能逻辑,如添加模块中的视图处理函数(polls.views.index()),这 ...
- 【5】Django项目配置settings.py详解
夫唯不争,故天下莫能与之争 --老子<道德经> 本节内容 1.项目配置文件settings.py介绍 2.数据库配置[MySQL] 3.创建模型对象并和数据库同步 4.python官方提供 ...
- Django setting 常用配置
setting.py 这个文件包含了所有有关这个Django项目的配置信息,均大写: TEMPLATE_DIRS , DATABASE_NAME , 等. 最重要的设置是 RO ...
- MySQL Workbench建表时 PK NN UQ BIN UN ZF AI 的含义
[转自网络]https://my.oschina.net/cers/blog/292191 PK Belongs to primary key 作为主键 NN Not Null 非空 UQ Uniqu ...
随机推荐
- Ruby Rails学习中:User 模型,验证用户数据
用户建模 一. User 模型 实现用户注册功能的第一步是,创建一个数据结构,用于存取用户的信息. 在 Rails 中,数据模型的默认数据结构叫模型(model,MVC 中的 M).Rails 为解决 ...
- python基础知识0-4
collection 他是对字典 元组 集合 进行加工的 是计数器 无论 深 ,浅 ,赋值 拷贝 内存地址都不变 赋值也是拷贝的一种 拷贝分两类数字 字符串 另一类: 列表 字典 元组 这一类还分两 ...
- Jmeter之断言(响应断言,断言持续时间)
断言是测试环节中,十分重要的一节. 响应结果是否正确,可以通过断言判断,无需人工确认. 1.为请求添加断言 常使用:响应断言>Bean Shell断言>断言持续时间 2.响应断言 ●常用来 ...
- AI面试必备/深度学习100问1-50题答案解析
AI面试必备/深度学习100问1-50题答案解析 2018年09月04日 15:42:07 刀客123 阅读数 2020更多 分类专栏: 机器学习 转载:https://blog.csdn.net ...
- hype-v上centos7部署高可用kubernetes集群实践
概述 在上一篇中已经实践了 非高可用的bubernetes集群的实践 普通的k8s集群当work node 故障时是高可用的,但是master node故障时将会发生灾难,因为k8s api serv ...
- 18-Perl 错误处理
1.Perl 错误处理程序运行过程中,总会碰到各式各样的错误,比如打开一个不存在的文件.程序运行过程中如果出现错误就会停止,我们就需要使用一些检测方法来避免错误,从而防止程序退出.Perl 提供了多中 ...
- 进阶Java编程(8)反射应用案例
1,反射实例化对象 经过一系列分析之后可以发现虽然获得了Class类的实例化对象但是依然觉得这个对象获取的意义不是很大,所以为了进一步的帮助大家理解反射的核心意义所在,下面将通过几个案例进行说明(都是 ...
- 修改源码去除zblog博客分类目录的RSS图标
zblog博客的所建立的分类默认前面是有一个RSS图标的,如下图所示: 其实这个图标的存在并不能起到太大的美化作用,增加用户订阅数量的作用.那么应该如何去掉这个RSS图标呢? 这个RSS图标的生成在z ...
- Ubuntu 忘记系统登录密码,如何修改密码
Ubuntu 忘记系统登录密码,如何修改密码. 1.重新启动,按ESC键进入Boot Menu,选择recovery mode(一般是第二个选项). 2.在#号提示符下用cat /etc/shadow ...
- SIP笔记
消息代号: 1)1XX:临时响应,表示请求消息正在被处理. 2)2XX:成功响应,表示请求已被成功接收,完全理解并被接受. 3)3XX:重定向响应,表示需采取进一步以完成该请求. 4)4XX:客户机错 ...