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)

大家都在看

  • Ruby快速入门

    推荐网站:http://ruby-for-beginners.rubymonstas.org/index.html源码参考:https://gitee.com/komavideo/…

    Linux 2023年6月14日
    095
  • 干货速看!同行盆友来稿:一文带你搭建K8S高可用集群,以及在上面搭建Prometheus和Grafana。

    写在开篇 kubeadm工具快速部署k8s集群实现故障自动发现、转移及修复,集群中部署prometheus+grafan可实现自动收集集群的各项新性能指标数据,可视化界面提升客户对…

    Linux 2023年6月7日
    088
  • Linux之vim编辑器

    1.vim三种模式 模式 操作 可视模式 可查看内容 编辑模式 可查看可修改内容 命令行模式 给vim发送控制命令,可查看内容 注:打开文件,默认是可视模式 2.三种模式的切换 可…

    Linux 2023年6月6日
    087
  • 用全域安全防范美国NSA对西工大的网络攻击

    上周写的一篇文章《全域安全:一种运行时安全管理模型》,向大家介绍了全域安全管理模型,它是如何在Laxcus分布式操作系统的分布环境下,解决了分布式应用业务的全流程安全管理问题。其中…

    Linux 2023年6月6日
    0100
  • PYTORCH: 60分钟 | 神经网络

    神经网络可以使用 torch.nn包构建。 现在你已经对autograd有所了解, nn依赖 autograd 定义模型并对其求微分。 nn.Module 包括层,和一个返回 ou…

    Linux 2023年6月16日
    0155
  • Redisson实现分布式锁源码解读

    文章目录 一、分布式锁的概念 和 使用场景 二、将redis官网对于分布式锁(红锁)的定义和Redisson实现做概括性总结 三、基于Redisson的分布式实现方案 四、加锁过程…

    Linux 2023年5月28日
    081
  • 【Example】C++ STL 常用容器概述

    前排提醒: 由于 Microsoft Docs 全是机翻。所以本文表格是我人脑补翻+审校。 如果有纰漏、模糊及时反馈。 了解每一种容器的特性、知道什么情况下用什么容器就可以。 序列…

    Linux 2023年6月13日
    078
  • 前端基础之JavaScript(一)

    一、JavaScript概述 1.1 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者–Netscape公司,决定将Ja…

    Linux 2023年6月14日
    0105
  • 在docker中使用主机串口通讯

    在进行软件docker化的过程时,很大的一个阻碍就是软件与各种外围硬件设备的交互,网口通信的设备能够很容易地接入容器,但是串口设备则要复杂一些。本文讨论在windows和linux…

    Linux 2023年6月6日
    096
  • 音视频技术入门课 -01 如何从色彩格式、帧率等参数角度看视频图像?

    本文将从视频 / 图像的原始数据格式、视频逐行 / 隔行扫描、帧率、图像分辨率、色域等几方面入手,对视频基础知识做一个整体性的了解。 看视频时会看到很多图像,是由一个个像素点组成的…

    Linux 2023年6月7日
    0120
  • Centos7下载及安装

    Centos7下载及安装 1.下载虚拟机 虚拟机下载地址: https://www.vmware.com 或者 360一键安装(推荐) 2.在虚拟机上安装Centos7 2.1.通…

    Linux 2023年5月27日
    084
  • 聊一聊如何搭建高性能网站哪一些事

    在开发中经常会遇到网站的性能平静下来,打开慢的情况。我们平常开发中怎么 一步一步排查这些问题并 解决问题呢 在快节奏的时代中,慢是个不容忍受的事情。 一、 为什么会’慢…

    Linux 2023年6月14日
    0120
  • Maven中POM文件总体配置说明

    POM文件总体配置说明 xxx xxx xxx xxx 4.0.0 xxx xxx jar 1.0-SNAPSHOT xxx-maven http://maven.apache.o…

    Linux 2023年6月6日
    081
  • MySQL实现备份案例(2)

    案例1:MySQL8.0实现数据库冷备份和还原 10.0.0.10 — MySQL8.0 #停止数&a…

    Linux 2023年6月7日
    094
  • dockerfile

    基础结构 指令 from label maintainer run cmd export env add copy entrypoint volume user workdir o…

    Linux 2023年6月7日
    083
  • cobbler

    cobbler cobbler cobbler简介 cobbler工作原理 cobbler的作用 cobbler服务端部署 cobbler简介 Cobbler是一个Linux服务器…

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