D. Jon and Orbs (概率dp)


题意:给定 k k k种龙晶, q q q个询问,每天产生一种龙晶,产生每种龙晶概率相等,每个询问给定 p p p,求产生 k k k种龙晶的概率 ≥ ( p − ε ) 2000 \ge \dfrac{(p-\varepsilon)}{2000} ≥2000(p−ε)​ 的最小天数。


思路:概率 d p dp dp,令 d p [ i ] [ j ] dp[i][j] dp[i][j]表示第 i i i天产生 j j j种龙晶的概率,有转移方程: d p [ i ] [ j ] = d p [ i − 1 ] [ j ] × j k + d p [ i − 1 ] [ j − 1 ] × k − ( j − 1 ) k dp[i][j]=dp[i-1][j]\times \dfrac{j}{k}+dp[i-1][j-1]\times \dfrac{k-(j-1)}{k} dp[i][j]=dp[i−1][j]×kj​+dp[i−1][j−1]×kk−(j−1)​

因为天数不确定,可开足够大的第一维,或者滚动数组去掉第一维,里层循环倒着转移即可。

然后每次求出第 i i i天的情况后,预处理出 a n s [ p ] ans[p] ans[p]数组。

需要注意的是 d p [ i ] [ 0 ] = ( i = = 0 ) 1 : 0 dp[i][0]=(i==0)1:0 dp[i][0]=(i==0)1:0。


代码

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
typedef long long ll;
const int N=1e3+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
#define mst(a,b) memset(a,b,sizeof a)
#define PII pair<int,int>
#define fi first
#define se second
#define pb push_back
int k,q;
double dp[N];
int a[N];
int main(){scanf("%d%d",&k,&q);dp[0]=1;for(int i=1,p=1;p<=1000;i++){for(int j=k;j;j--)dp[j]=dp[j]*j/k+dp[j-1]*(k-j+1)/k;while(p<=1000&&dp[k]*2000>=p-1e-7) a[p++]=i;dp[0]=0;}while(q--){int p;scanf("%d",&p);printf("%d\n",a[p]);}return 0;
}

D. Jon and Orbs (概率dp)相关推荐

  1. 插头DP 概率DP / 期望DP

    插头DP && 概率DP / 期望DP 写在前面: 插头DP P5056 [模板]插头dp 手写哈希表的方法: 拉链法的代码如下: 开放寻址法的代码如下: 接下来是这道题的代码实现: ...

  2. 2018.09.01 poj3071Football(概率dp+二进制找规律)

    传送门 概率dp简单题. 设f[i][j]表示前i轮j获胜的概率. 如果j,k能够刚好在第i轮相遇,找规律可以发现j,k满足: (j−1)>>(i−1)(j−1)>>(i−1) ...

  3. Discovering Gold LightOJ - 1030[概率dp或者记忆化搜索]

    题目大意:有一个[1,n][1,n][1,n]的数轴,数轴上的每个对应位置上都有金矿,你初始位置是1,然后你每次都会投色子决定你下一步跳到哪里,如果你跳出了nnn,那么你就要重新投.问你跳到nnn的时 ...

  4. 【原创】概率DP总结 by kuangbin

    概率DP主要用于求解期望.概率等题目. 转移方程有时候比较灵活. 一般求概率是正推,求期望是逆推.通过题目可以体会到这点. 首先先推荐几篇参考的论文: <信息学竞赛中概率问题求解初探> & ...

  5. poj 3071 Football(概率dp)

    http://poj.org/problem? id=3071 大致题意:有2^n个足球队分成n组打比赛.给出一个矩阵a[][],a[i][j]表示i队赢得j队的概率.n次比赛的流程像这样France ...

  6. HDU 5001 概率DP || 记忆化搜索

    2014 ACM/ICPC Asia Regional Anshan Online 给N个点,M条边组成的图,每一步能够从一个点走到相邻任一点,概率同样,问D步后没走到过每一个点的概率 概率DP  測 ...

  7. hdu 3853 LOOPS 概率DP

    简单的概率DP入门题 代码如下: 1 #include<iostream> 2 #include<stdio.h> 3 #include<algorithm> 4 ...

  8. HDU - 4035 Maze(概率dp)

    题目链接:点击查看 题目大意:给出一个 n 个点的树,初始时位于点 1 ,每个点都会给出一个概率 k[ i ] 和一个概率 e[ i ] ,其代表的意义分别是: k[ i ] :在点 i 有 k[ i ...

  9. SDUT - 2623 The number of steps(概率dp)

    题目链接:点击查看 题目大意:给出一个 n 层的三角形,第一层有 1 个点,第二层有 2 个点,第三层有 3 个点 ... 第 n 层有 n 个点,现在规定从第一层的点向下出发: 如果左下方有点并且右 ...

最新文章

  1. 为什么 Java 后端开发没有大规模采用 Kotlin?
  2. 给XCODE加一个注释的小插件
  3. java设计模式_工厂方法
  4. c++虚继承和虚函数和抽象类、接口类,聚合类
  5. consul之:ACL配置使用
  6. 动态规划训练21 [FatMouse and Cheese HDU - 1078 ]
  7. MUI下拉导航组件 - 应用篇
  8. idea中实体类右击没有ptg_这些6到飞起的idea插件,你还没用过?
  9. cpan安装_生信平台搭建(五):安装perl模块
  10. 怎样用一个3升的杯子和一个5升的杯子装出4升水来(杯子没有刻度)?
  11. 数据分析——鸢尾花数据集
  12. 藏在成都这个阴雨小城里的互联网公司
  13. latex pdf 统计字数
  14. rem 前端字体_移动端前端开发不可不知的——rem
  15. 【BP数据预测】基于matlab天牛须算法优化BP神经网络数据预测【含Matlab源码 1318期】
  16. 【论文笔记】Reaching agreement in the presence of faults (EIG)
  17. 上海迪士尼将推出虎年新春全新体验
  18. linux手动安装rsync_在Linux/Unix上安装rsync并通过示例的方式介绍使用rsync命令
  19. Chrome Autofill 删除规则
  20. C语言指针难吗?纸老虎而已,纯干货讲解

热门文章

  1. 小区物业费信息管理系统设计c++_商业模式经典案例:小区超市年赚200万,周围同行都被干掉了!...
  2. 常用设计模式【连载】
  3. 全志r528编译搭建之“秘籍”
  4. 基于米联客MA703FA开发板的MicroBlaze LWIP千兆以太网例程
  5. Flutter圆角阴影边框
  6. C语言 do while语句的用法
  7. 核自适应滤波自学第二章
  8. React 拖拽改变大小,react-resizable 属性详解
  9. html选择器与文档流基本介绍
  10. java毕业设计人人小说系统mybatis+源码+调试部署+系统+数据库+lw