D. Jon and Orbs(很笨的概率dp)
发布日期:2021-06-30 10:23:29 浏览次数:2 分类:技术文章

本文共 684 字,大约阅读时间需要 2 分钟。

感觉这个题很蠢

直接 f [ i ] [ j ] f[i][j] f[i][j]表示 i i i次后有 j j j个出现的概率

f [ i ] [ j ] = f [ i − 1 ] [ j − 1 ] ∗ k − ( j − 1 ) k + f [ i − 1 ] [ j ] ∗ j k f[i][j]=f[i-1][j-1]*\frac{k-(j-1)}{k}+f[i-1][j]*\frac{j}{k} f[i][j]=f[i1][j1]kk(j1)+f[i1][j]kj

#include 
using namespace std;int k,q;double f[20009][1009]; int main(){
cin >> k >> q; f[1][1]=1.0; double lv = 1.0/k; for(int i=2;i<=20000;i++) for(int j=1,lim = min(i,k);j<=lim;j++) f[i][j] = f[i-1][j-1]*lv*(k-j+1)+f[i-1][j]*lv*j; while( q-- ) {
double p; cin >> p; //让概率大于p/2000 //已经投了i次,数目为j的概率 p /= 2000.0; for(int i=1;i<=20000;i++) {
if( f[i][k]>=p ) {
cout << i << endl; break; } } }}

转载地址:https://issue-is-vegetable.blog.csdn.net/article/details/109390557 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:CF387D George and Interesting Graph(最大匹配)
下一篇:Qin Shi Huang‘s National Road System(次小生成树变形)

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月08日 08时03分27秒