题目链接:

  http://codeforces.com/problemset/problem/698/C

题目大意:

  n个物品,k个格子,第i个物品每次被选取的概率为$p_{i}$,如果格子里没有该物品就把它丢进去,如果没有,再看格子是否被装满,如果被装满,就把最早选取的替换成该物品,求$10^{100}$次后格子里含有每个物品的概率。

  答案精度要求小于$10^{-6}$。

题解:

  就不能自己玩一次试试吗= =

  因为选取的次数太多了,所以可以看做一定会选到能选取的物品。(有一些为0的当然选不到了)

  然后正着推……

  我们可以发现,一个物品是否存在只与其最后一次出现的位置有关(显然),同时重复一个物品的情况可以直接合并(不会对答案产生贡献)。即,问题在于最后若干次选取中,选到k个物品。所以我们的问题就变成了在k次选取中,选到每种物品的概率。

  然后……这题还有容斥流!?

  想想也是…然而没有写。

 #include<cstdio>
using namespace std;
int n,m;
double ans[];
double f[<<];
double p[];
int num[<<];
double tot[<<];
int main(){
scanf("%d%d",&n,&m);
int cnt=n;
for(int i=;i<n;i++){
scanf("%lf",p+i),f[<<i]=p[i];
cnt-=(p[i]==0.0);
}
if(m>cnt) m=cnt;
for(int i=;i<(<<n);i++)
for(int j=;j<n;j++)
if(i&(<<j))
num[i]++;
else
tot[i]+=p[j];
for(int s=;s<(<<n);s++){
for(int i=;i<n;i++){
if((<<i)&s)
continue;
else if(tot[s]!=) f[(<<i)|s]+=f[s]*p[i]/tot[s];
}
}
for(int i=;i<(<<n);i++)
if(num[i]==m)
for(int j=;j<n;j++)
ans[j]+=f[i]*(((<<j)&i)>);
for(int i=;i<n;i++)
printf("%.20lf ",ans[i]);
}

  

【codeforces 698C】LRU的更多相关文章

  1. 【codeforces 415D】Mashmokh and ACM(普通dp)

    [codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=200 ...

  2. 【codeforces 707E】Garlands

    [题目链接]:http://codeforces.com/contest/707/problem/E [题意] 给你一个n*m的方阵; 里面有k个联通块; 这k个联通块,每个连通块里面都是灯; 给你q ...

  3. 【codeforces 707C】Pythagorean Triples

    [题目链接]:http://codeforces.com/contest/707/problem/C [题意] 给你一个数字n; 问你这个数字是不是某个三角形的一条边; 如果是让你输出另外两条边的大小 ...

  4. 【codeforces 709D】Recover the String

    [题目链接]:http://codeforces.com/problemset/problem/709/D [题意] 给你一个序列; 给出01子列和10子列和00子列以及11子列的个数; 然后让你输出 ...

  5. 【codeforces 709B】Checkpoints

    [题目链接]:http://codeforces.com/contest/709/problem/B [题意] 让你从起点开始走过n-1个点(至少n-1个) 问你最少走多远; [题解] 肯定不多走啊; ...

  6. 【codeforces 709C】Letters Cyclic Shift

    [题目链接]:http://codeforces.com/contest/709/problem/C [题意] 让你改变一个字符串的子集(连续的一段); ->这一段的每个字符的字母都变成之前的一 ...

  7. 【Codeforces 429D】 Tricky Function

    [题目链接] http://codeforces.com/problemset/problem/429/D [算法] 令Si = A1 + A2 + ... + Ai(A的前缀和) 则g(i,j) = ...

  8. 【Codeforces 670C】 Cinema

    [题目链接] http://codeforces.com/contest/670/problem/C [算法] 离散化 [代码] #include<bits/stdc++.h> using ...

  9. 【codeforces 515D】Drazil and Tiles

    [题目链接]:http://codeforces.com/contest/515/problem/D [题意] 给你一个n*m的格子; 然后让你用1*2的长方形去填格子的空缺; 如果有填满的方案且方案 ...

随机推荐

  1. MySQL 和 JDBC(Java数据库连接)

    1.MySQL 1.1   MySQL简介 a)MySQL是一个开源免费的关系型数据库管理系统. b)默认用户:root c)默认端口号: 2.MySQL常用命令 2.1连接MySQL mysql   ...

  2. 解决ecshop3.6 H5版本公告页面为空的修改办法

    ecshop3.6公告页面打开如下,页面完全无效果,如下图. 经过简单美化后,有返回按钮,页面加以美化.如下图. 是不是要好看多了.简单修改几步即可. 修改文件 \appserver\resource ...

  3. 小议 HashMap

    大家都知道,在Java里对对象的操作是基于引用的.而当我们需要对一组对象操作的时候,就需要有接收这一组引用的容器.平时我们最常用的就是数组.在Java里可以定义一个对象数组来完成许多操作.可是,数组长 ...

  4. oracle 11g杀掉锁的sql

    oracle 11g杀掉锁的sql [引用 2013-3-6 17:19:12]     字号:大 中 小 --查询出出现锁的session_idselect session_id from v$lo ...

  5. Android之动画

    Android的动画可以分为三种,View动画.帧动画.属性动画.View动画通过对场景里的对象不断做图像变化(平移.缩放.旋转.透明度)从而产生动画效果,它是一种渐进式动画,而且View动画支持自定 ...

  6. P2453 [SDOI2006]最短距离

    题目描述 一种EDIT字母编辑器,它的功能是可以通过不同的变换操作可以把一个源串X [l..m]变换为新的目标串y[1..n].EDIT提供的变换操作有: 源串中的单个字符可被删除(delete): ...

  7. Python并发编程-RabbitMQ消息队列

    RabbitMQ队列 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列 ...

  8. Angular6.0发布

    Angular v6 新版本重点关注工具链以及工具链在 Angular 中的运行速度问题. Angular v6 是统一整体框架.Material 和 CLI 三大 Angular 组件的第一个版本, ...

  9. C 实现基于角色的权限系统

    本文demo下载地址:http://www.wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=1068 实例使用C# 实现基于角色的权限 ...

  10. es6(四):Symbol,Set,Map

    1.Symbol: Symbol中文意思"象征" Symbol:这是一种新的原始类型的值,表示独一无二的值(可以保证不与其它属性名冲突) Symbol()函数前面不能使用new,因 ...