题面

题意翻译

给定$n$个货架,初始时每个上面有$a[i]$个蜜罐。

有$q$次操作,每次操作形如$u,v,k$,表示从货架$u$上任意选择$k$个蜜罐试吃(吃过的也还能吃),吃完后把这$k$个蜜罐放到$v$货架上去。

每次操作完之后回答所有蜜罐都被试吃过的货架数量的期望

题解

直接引用$\text{yyb}$

发现没被吃过的数量对于每个货架而言都是单调不增的。

所以考虑没有被吃过的数量,设$f[i][j]$表示第$i$个货架有$j$个蜜罐没有被试吃的概率。

转移的话枚举当前试吃了几个没被吃过的蜜罐用组合数转移即可。

代码

#include<cstdio>
#include<cstring>
#include<cctype>
#include<cmath>
#include<algorithm>
#define RG register
#define file(x) freopen(#x".in", "r", stdin);freopen(#x".out", "w", stdout);
#define clear(x, y) memset(x, y, sizeof(x)) inline int read()
{
int data = 0, w = 1; char ch = getchar();
while(ch != '-' && (!isdigit(ch))) ch = getchar();
if(ch == '-') w = -1, ch = getchar();
while(isdigit(ch)) data = data * 10 + (ch ^ 48), ch = getchar();
return data * w;
} const int maxn(100010);
double f[maxn][110], ans;
int n, q, a[maxn], b[maxn], ln[maxn];
inline double C(int n, int m)
{
if(n < m) return 0; double ans = 1;
for(RG int i = 1; i <= m; i++) ans *= 1. * (n - i + 1) / i;
return ans;
} int main()
{
n = read();
for(RG int i = 1; i <= n; i++) a[i] = b[i] = read();
for(RG int i = 1; i <= n; i++) f[i][a[i]] = 1;
for(RG int i = 1; i <= n; i++) ans += f[i][0];
q = read();
for(RG int i = 1; i <= q; i++)
{
int x = read(), y = read(), K = read(); ans -= f[x][0];
for(RG int j = 0; j <= a[x]; j++)
{
double F = 0, c = C(b[x], K);
for(RG int k = 0; k <= K; ++k)
F += f[x][j + k] * C(j + k, k) * C(b[x] - j - k, K - k) / c;
f[x][j] = F;
}
b[x] -= K, b[y] += K, ans += f[x][0];
printf("%.10lf\n", ans);
}
return 0;
}

CF248E Piglet's Birthday的更多相关文章

  1. CF248E Piglet's Birthday(概率dp)

    题面 luogu CodeForces 题解 \(orz\) yyb 转移蜜罐其实是吓唬人的...... 转移的蜜罐都是尝试过的,所有只关心当前架子上的蜜罐数 设\(f[i][j]\)表示第i个货架有 ...

  2. Noip前的大抱佛脚----赛前任务

    赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...

  3. NOIP前的刷题记录

    因为这几天要加油,懒得每篇都来写题解了,就这里记录一下加上一句话题解好了 P4071 [SDOI2016]排列计数   组合数+错排 loj 6217 扑克牌 暴力背包 P2511 [HAOI2008 ...

  4. 【CF248E】Piglet's Birthday(动态规划)

    [CF248E]Piglet's Birthday(动态规划) 题面 洛谷 CodeForces 翻译: 给定\(n\)个货架,初始时每个上面有\(a[i]\)个蜜罐. 有\(q\)次操作,每次操作形 ...

  5. 湖南大学ACM程序设计新生杯大赛(同步赛)J - Piglet treasure hunt Series 2

    题目描述 Once there was a pig, which was very fond of treasure hunting. One day, when it woke up, it fou ...

  6. 湖南大学ACM程序设计新生杯大赛(同步赛)I - Piglet treasure hunt Series 1

    题目描述 Once there was a pig, which was very fond of treasure hunting. The treasure hunt is risky, and ...

  7. 简单粗暴,详细得不要不要的 JavaWeb快速入门实例(1)

    额,有些标题党的嫌疑,小细节不用在意哈... 前端时间我在写一个系列,是关于JavaWeb的一个入门级项目实战,我的初衷就是打算写给初学者的,希望能对他们有所帮助. 这段时间博主也接触了一些事情,感觉 ...

  8. perl 语法速查

    同时学perl.python和shell脚本会很容易将它们的语法搞混,本文主要是一个个人的总结,方便要用时的查询. perl基本语法.安装.帮助文档 文件头格式: #!/usr/bin/perl us ...

  9. Perl 语法 - 基础

    perl语言的核心是正则表达式,在文本处理上非常有优势,与python类似,但语法不同,perl的语法很灵活,用多了才会觉得好用. 常用知识点总结: perl语法类似于C语言(perl源于Unix), ...

随机推荐

  1. 初学Linux(一)关闭操作shutdown halt reboot

    1.shutdown –h 10 #这个命令告诉大家,计算机将在10分钟后关机,并且会显示在登陆用户的当前屏幕中. 2.Shutdown –h now #立马关机 3.Shutdown –h 11:1 ...

  2. PHP-7的FPM服务的启动

    1.PHP 7的FPM服务位置:/ect/init.d/php7.0-fpm 2.启动:sudo service php7.0-fpm reload

  3. .NET Reflector注册机激活方法

    .NET Reflector注册机是一款专门针对.NET Reflector(.NET反编译工具软件)而推出的一款破解辅助工具软件.因为官方破解版软件需要118美元才能用,不然只有14天的试用期,为此 ...

  4. 2018 徐州赛区网赛 G. Trace

    题目链接在这里 题意是:按时间先后有许多左下角固定为(0,0),右上角为(xi,yi)的矩形浪潮,每次浪潮会留下痕迹,但是后来的浪潮又会冲刷掉自己区域的老痕,留下新痕迹,问最后留下的痕迹长度为多少? ...

  5. SDN2017 第一次实验作业

    1. 安装mininet 从github上获取Mininet源码并运行安装脚本 $ git clone git://github.com/mininet/mininet $ ./mininet/uti ...

  6. 【转载】QPS,用户平均等待时间,服务器平均请求处理时间

    转自:http://www.cnblogs.com/coldplayerest/archive/2012/06/28/2567656.html 1. 计算网络的QPS时,必须要指定并发度,否则没有意义 ...

  7. SGU---107 水题

    题目链接: http://codeforces.com/problemsets/acmsguru/problem/99999/107 题目大意: 求n位数有多少个的平方末尾是987654321 思路: ...

  8. SGU---101 无向图的欧拉回路

    题目链接: https://cn.vjudge.net/problem/SGU-101 题目大意: 给定你n张骨牌,每张牌左右两端有一个数字,每张牌的左右两端数字可以颠倒,找出一种摆放骨牌的顺序,使得 ...

  9. bzoj1808 [Ioi2007]training 训练路径

    Description 马克(Mirko)和斯拉夫克(Slavko)正在为克罗地亚举办的每年一次的双人骑车马拉松赛而紧张训练.他们需要选择一条训练路径. 他们国家有N个城市和M条道路.每条道路连接两个 ...

  10. (转)MyEclipse快捷键大全

    -------------------------------------MyEclipse 快捷键1(CTRL)-------------------------------------Ctrl+1 ...