POJ1322Chocolate–概论DP

每次从包装中取出一块巧克力并放在桌子上。如果桌子上有两个相同颜色的巧克力,则将这两个丢掉。
如果包中有C种颜色的巧克力(颜色均匀分布),从包装中取出N个巧克力后,桌子上确实有M个巧克力的概率是多少?

对于每种情况,存在三个非负整数:C(C

首先,判断边界条件,如果取出0个巧克力,那么桌子上剩余0个巧克力的概率是多少???很简单,dp[0][0] = 1;

另外,针对输入的c,n,m进行非法判断,即概率为0.000的直接输出就好了

dp[i][j]表示前i次操作(即取出i个巧克力)后,桌上出现j个巧克力的概率。试想,如果i+j是奇数会是什么情况?

dp[i][j]是等于0的(不可能出现的情况)。为什么不可能出现呢, 因为每次取出的球都会现放到桌上比较,如果没有重复的颜色,则桌子上球数+1,如果有重复,将重复的两个球都拿掉,也就是i的次数首先加到m上,此刻的m要么不变,要么-2,不会出现奇数的情况。所以dp[i][j]中i+j为奇数则概率是0

可以手动模拟验算下。

那么,状态转移方程怎么来呢??因为 么取到的球和桌子上球的颜色不重复,即 dp[i-1][j-1] * (c-j+1.0)/c; 就是在前面拿出i-1个巧克力后,桌子剩余j-1个巧克力的概率上,乘上这次取出的巧克力与桌子上巧克力颜色不重复的概率, c-j+1.0,表示颜色总数减去桌上的不同颜色的,剩余的也是不同颜色的,再除以c就是对应的取出不同颜色的概率了

要么 取出的球和桌上某个球的颜色相同,要一起拿走,方程是这样:dp[i-1][j+1]*(j+1.0)/c ,j+1/c,即取出的球的颜色和桌上的球的某个颜色相同了

dp[i][j]将二者加起来即可

另外,在对很大的n进行计算时,可以将其看成一个较小的n,因为很大的n对应的概率和较小的数m的概率只有小数点后好几位才会不同,所以可以转换下

Original: https://www.cnblogs.com/ygsworld/p/11329954.html
Author: 回忆酿的甜
Title: POJ1322Chocolate–概论DP

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/582130/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 磁盘管理操作

    磁盘管理操作 虚拟环境centos7.3 fdisk用法:fdisk [选项] 一、磁盘分区 1.在做磁盘分区之前关闭虚拟机添加一块20G的磁盘。 添加之后记得点下面的确定可以应用…

    Linux 2023年6月7日
    0130
  • 使用MyBatis Generator代码生成器的简单模式

    在动态web项目的lib目录下放入mybatis-3.2.2jar、mysql-connector-java-5.1.25-bin.jar、log4j-1.2.17.jar还有生成…

    Linux 2023年6月8日
    0120
  • Windows10 下使用 telnet 命令

    正常情况下 windows 是使用不了 telnet 命令的: 打开控制面板-》程序和功能-》启用或关闭 Windows 功能 勾选 “Telnet客户端”…

    Linux 2023年6月13日
    094
  • python写一个双色球彩票计算器

    首先声明,赌博一定不是什么好事,也完全没有意义,不要指望用彩票发财。之所以写这个,其实是用来练手的,可以参考这个来预测一些其他的东西,意在抛砖引玉。 啰嗦完了,马上开始,先上伪代码…

    Linux 2023年6月6日
    0109
  • [20220302]oracle如何定位使用library cache mutex 2.txt

    [20220302]oracle如何定位使用library cache mutex 2.txt –//这个问题实际上困扰我很久,我开始以为library cache b…

    Linux 2023年6月13日
    086
  • alloc_pages的实现浅析

    alloc_pages的使用 struct page *alloc_pages(gft_t gfp, unsigned int order) alloc_pages定义于 inux…

    Linux 2023年6月7日
    0113
  • TCP三次握手 四次挥手

    最近在恶补计算机网络方面的知识,之前对于TCP的三次握手和四次分手也是模模糊糊,对于其中的细节更是浑然不知,最近看了很多这方面的知识,也在系统的学习计算机网络,加深自己的CS功底,…

    Linux 2023年6月7日
    091
  • shell 同时执行多任务下载视频

    本文为博主原创,转载请注明出处: shell 脚本不支持多线程,但我们需要用shell 脚本同时跑多个任务时怎么让这些任务并发同时进行,可以采用在每个任务 后面 添加一个 &amp…

    Linux 2023年6月14日
    0116
  • 后端编写Swagger接口管理文档

    在后端开发当中,编写好多个接口后需要通过注解编写相应的接口文档提供给前端调用接口实现前后端分离。 Swagger接口管理文档 访问接口文档的网页:http://localhost:…

    Linux 2023年6月7日
    098
  • HTML基础笔记整理

    「学习笔记」HTML基础 勤做笔记不仅可以让自己学的扎实,更重要的是可以让自己少走弯路。有人说:”再次翻开笔记是什么感觉”,我的回答是:”初恋般…

    Linux 2023年6月13日
    086
  • ​Linux知识点总结(内附思维导图,建议收藏)

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    0110
  • windows 挂载 NFS共享

    实验环境: NFS主机(192.168.18.10):CentOS7.0 软件包:nfs-utils、rpcbind; 客户机(192.168.18.41):windows ser…

    Linux 2023年5月27日
    0218
  • WPF 界面打不开提示 System.ArithmeticException Overflow or underflow in the arithmetic operation 异常

    本文告诉大家如何解决界面打不开,抛出 System.ArithmeticException: Overflow or underflow in the arithmetic ope…

    Linux 2023年6月6日
    091
  • Linux之NFS

    一、什么是NFS 共享存储,文件服务器 1.1 基本概述 NFS是Network File System的缩写及网络文件系统。NFS主要功能是通过局域网络让不同的主机系统之间可以共…

    Linux 2023年5月27日
    083
  • Android安卓进阶技术分享之AGP工作原理

    1.基础准备 在分析源码之前,我想你应该对 Android 打包流程已经有基础的了解,至少了解了下图的打包过程: 否则你有可能不了解下文中的专业术语。 2.AGP源码的打开方式 看…

    Linux 2023年6月13日
    0126
  • k8s集群中网络实现通信原理

    1)安装Docker时,创建一个名为 docke0 的虚拟网桥,虚拟网桥使用”10.0.0.0 -10.255.255.255 “、”172.1…

    Linux 2023年6月14日
    0104
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球