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 ...
随机推荐
- Asp.net core Identity + identity server + angular + odata + 权限管理
今天踩了一个坑. 网站发布后看到了一个 error Refused to execute inline script because it violates the following Content ...
- isEmpty 和 isBlank 区别
isEmpty 和 isBlank 区别 org.apache.commons.lang.StringUtils 类提供了 String 的常用操作,最为常用的判空有如下两种 isEmpty(Stri ...
- Java反射理解(五)-- 方法反射的基本操作
Java反射理解(五)-- 方法反射的基本操作 方法的反射 1. 如何获取某个方法 方法的名称和方法的参数列表才能唯一决定某个方法 2. 方法反射的操作 method.invoke(对象,参数列表) ...
- O045、理解 Cinder 架构
参考https://www.cnblogs.com/CloudMan6/p/5573159.html 从本节开始我们学习OpenStack 的 Block Storage Service ,Cin ...
- Centos7:nginx的安装,配置及使用
安装依赖 yum install gcc-c++//gcc环境 yum install -y pcre pcre-devel//PCRE:nginx的http模块使用pcre来解析正则表达式 yum ...
- 微信小程序子传父
子组件 父组件
- vue2.0+按需引入element-ui报错
项目使用vue脚手架自动生成的,vue版本为^2.5.16.项目中需要按需使用element-ui,根据element-ui的官方文档,一开始在babel.config.js文件中修改配置 modul ...
- Python自制小时钟,并转换为exe可执行程序详解
一,简介Python写完程序,要靠命令来执行太LOW,太低调了,还不华丽了. 再说别人的电脑,都没有Python库,怎么执行,还能不能愉快的一起玩耍了. 所以哪怕只会写一个HelloWorld,也要弄 ...
- java_day03_流程控制
ch03 目标:表达式和流程控制 ---------------------------------------------- 1.实例变量和局部变量 程序的基本功能是处理数据,程序中需要使用变量来接 ...
- 裸磁盘上ext4与xfs在线扩容,非LVM
虚拟机添加一个20G的硬盘,磁盘为sdb,分区为ext4 格式化一个5Gib的磁盘出来,用dd命令写入4G数据. 一.需求是容量为5G的磁盘,文件系统为ext4的sdb1扩容到10G. 操作步骤为 1 ...