题面在
题意
开始时袋中有\(t\)种小球,第\(i\)种小球有\(t_i\)个,之后每次等概率取出一个球,第\(i\)次取球时观察这个球的颜色\(c_i\)放回并向袋中加入\(d\)个颜色为\(c_i\)的球;
给出一组询问
\([x_i,y_i](1\le i\le n)\),求同时满足第
\(x_i\)次取球的颜色为
\(y_i\)的概率
\(1≤t,n≤1000, 1≤a_k ,d≤10, 1≤x_1<x_2<…<x_n≤10000, 1≤y_k≤t\)
hint
有没有注意到\(1≤x_1<x_2<…<x_n≤10000\)这个条件?
感觉又鬼畜又没有用对么?
那么我们把这个条件删掉 其实这个条件仅仅是在给你一个提示
sol
其实我做题的时候也不知道这个条件有什么用...于是我就没有做出来
如果
\(x_i=i\)你还不会做?
直接模拟即可 所以这道题直接模拟就可以了。
!!!!!!
是的很震惊对吧 给你
\(1≤x_1<x_2<…<x_n≤10000\)这个条件,
就是让你考虑怎么把这个条件化成
\(x_i=i\)的......
接下来我们开始证明,
如果仅仅考虑一次抽取的情况,每次抽到颜色\(c\)的概率都是一样的,
即第
\(i\)次抽到颜色
\(c\)的概率和第
\(i+1\)次抽到颜色
\(c\)的概率相同
设第
\(i\)次抽之前,袋子里总共有
\(tot\)个球,有
\(a\)个颜色为
\(c\)的球(update 4.4:感谢 @GuessYCB的更正 orz)
那么第
\(i\)次抽抽到
\(c\)的概率显然是
\(P_i=\frac{a}{tot}\) 那么第
\(i+1\)次抽抽到
\(c\)的概率呢?
\[P_{i+1}=\frac{a}{tot}\times\frac{a+d}{tot+d}+(1-\frac{a}{tot})\times\frac{a}{tot+d}=\frac{a}{tot}=P_i\] 嗯是的
于是直接把\([x_1,x_2,x_3,...,x_n]\)转换为\([1,2,3,...,n]\)即可
注意高精(可以考虑先
\(fact\),最后再化系数)
代码
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include