蓝桥杯算法训练1:印章

这篇具有很好参考价值的文章主要介绍了蓝桥杯算法训练1:印章。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

资源限制

内存限制:256.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

  共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。

输入格式

  一行两个正整数n和m

输出格式

  一个实数P表示答案,保留4位小数。

样例输入

2 3

样例输出

0.7500

数据规模和约定

  1≤n,m≤20

提交代码

编译语言:

C++CJavaPython

代码:

共有 n 种图案的印章,每种图案的出现概率相同。故买到某种图案的印章的概率为 1/n 。

买了 i 次,集齐 j 种图案。

当 i < j 是不可能事件,故概率为 0 ;
当 j = 1 时,表达买了 i 次,买的都是同一种,故概率为(1/n)^ j * n ;
当 i > j ,j != i 时,分为两种情况:
前 i-1 次买到了 j 种,故第 i 次买到的只能是 j 种中的一种,即 dp [ i-1 ] [ j ] * (1/n)* j;
前 i-1 次买到了 j-1 种,故第 i 次买到的只能是 n-j 种中的一种,即 dp [ i-1 ] [ j-1 ] * (1/n)* (n-j+1)。

原文链接:https://blog.csdn.net/qq_45256352/article/details/123958444

【解析】
        首先我们知道这道题目是DP类型的,就开门见山了。

        1.在做DP题目的时候,我们首先要确定这道题是几维的DP数组?

我们分析题目可知,这道题有两个极其清晰的条件,就是购买的次数和需要集齐的印章个数,所以这是一道二维数组题。

        2.如何确定DP数组的初始条件,对于一维的,一般是前两个元素,对于二维而言,一般是第一行和第一列,如果条件多的话还能多初始几行;对于三维而言,我……暂时做不出来。

前面说了有两个条件,那么在二维数组中,那个是行,哪个是列呢,我们来分析一下。

假设要集齐的印章个数为行,购买的次数为列。对于初始数组的时候貌似基本都是零,没有可利用的数据,可知不是。

所以购买的次数为行,勋章的集齐个数为列。

初始化数组:前提条件(我们可知当购买的次数小于勋章个数时,P==0)。

我们先把这些i<j的元素先初始化为0;


            if(i<j)
                dp[i][j]=0;
然后分析第一列元素,购买i次,只集齐一种印章,那么P=(1/n)^i *n。

解释:购买的结果共有1/n)^i 种,但是元素全部一样的却只有n种。

            else if(j==1)
                dp[i][j]=pow(p,i-1);
接着就是一般情况,对于其他元素而言,dp[i][j]这个数该如何计算呢?

这个元素就代表购买i次,集齐j个印章。

有两个情况:

第i次不要要集齐新的印章了,也就是说前i-1次集齐了j种。

计算公式:dp[i-1][j]*(j/n)

第i次需要集齐新印章,也就是说前i-1次集齐了j-1种。

计算公式:dp[i-1][j]*(n-(j-1)/n)

#include<stdio.h>
#include<math.h>
int main(){
	int n,m;
	scanf("%d %d",&n,&m);
	double p=1.0/n;
	double dp[m+1][n+1];
	int i,j;
	for(i=1;i<m+1;i++){
		for(j=1;j<n+1;j++){
			if(i<j)
				dp[i][j]=0;
			else if(j==1)
				dp[i][j]=pow(p,i-1);
			else
				dp[i][j]=dp[i-1][j]*p*j+dp[i-1][j-1]*p*(n-j+1); 
		}
	}
	printf("%.4lf",dp[m][n]);
	return 0;
}


原文链接:https://blog.csdn.net/weixin_53535434/article/details/127031561文章来源地址https://www.toymoban.com/news/detail-407309.html

到了这里,关于蓝桥杯算法训练1:印章的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [蓝桥杯Python]算法练习、算法基础、算法训练、算法模板(持续更新)

    [蓝桥杯Python]算法练习、算法基础、算法训练、算法模板( 持续更新..... ) 目录 一、算法基础 1.Huffuman树 2.Sine之舞 3.数列排序 4.数列排序 5.特殊回文数 6.回文数 7.特殊的数字 8.杨辉三角形 9.高精度加法 10.Fibonacci数列 11.报时助手 12.回形取数 13.矩阵乘法 二、算法提高 1.印章

    2023年04月08日
    浏览(47)
  • 蓝桥杯备赛day02 -- 算法训练题 拿金币Java

    目录 题目: 问题描述 输入格式 输出格式 解题过程 第一步 定义dp数组 第二步 确定 dp 数组递推公式  第三步 dp数组的初始化 第四步 dp数组的遍历顺序 第五步 举例说明  报错:内存超限 用dp数组去存储位置上的金币 dp数组从二维降为一维  收获:   有一个N x N的方格,每一个

    2024年01月17日
    浏览(43)
  • 【华为OD机试】芯片资源限制(贪心算法—Java&Python&C++&JS实现)

    本文收录于专栏:算法之翼 本专栏所有题目均包含优质解题思路,高质量解题代码(JavaPythonC++JS分别实现),详细代码讲解,助你深入学习,深度掌握!

    2024年04月11日
    浏览(53)
  • python+openCV使用SIFT算法实现印章的总相似度检测

    首先整体流程是预建了一个印章库,包含若干张图片。目的是输入一张印章图片,与库里图片对比,最终显示相似度最高的三张。记一下关键代码。 1.图像预处理 主要是红色区域提取、常规灰度二值、对于形态不好的图片做个腐蚀啥的。 2.做一个霍夫圆打开,方便后续文字识

    2024年02月08日
    浏览(46)
  • LLM-分布式训练工具(一):DeepSpeed【微软】【大模型分布式训练工具,实现ZeRO并行训练算法】【zero3配置将模型参数切分后分配到不同的显卡中,突破单张显卡容量不足以加载模型参数的限制】

    DeepSpeed是微软推出的大规模模型分布式训练的工具,主要实现了ZeRO并行训练算法。 原始文档链接: DeepSpeed Optimizer state partitioning (ZeRO stage 1) Gradient partitioning (ZeRO stage 2) Parameter partitioning (ZeRO stage 3) Custom mixed precision training handling A range of fast CUDA-extension-based optimizers ZeRO-Offlo

    2024年02月16日
    浏览(42)
  • Linux Cgroups进程资源限制管理 之 资源子系统限制/控制、Docker资源隔离与限制原理解读

    Linux cgroups(控制组)最初由Google工程师Paul Menage在2006年提出,并在Linux内核的2.6.24版本中首次引入。自那时以来,cgroups一直是Linux内核的一部分,并在容器化技术等领域中发挥着至关重要的作用。随着时间的推移,cgroups功能不断得到改进和扩展,以满足对资源管理和隔离性能

    2024年02月21日
    浏览(41)
  • 大数据双路e5主机搭建:2696v3+256g内存

    2022年,终于搭建了一个双路e5主机。拿来跑大数据集群效果不错。配置单分享一下,方便有需要的童鞋参考。 众所周知,大数据要跑集群,集群一般是奇数台机器,入门学习3台就够了。踩了不少跨集群跑数据集成的坑,最终还是决定能同时跑2套集群,必要的时候也方便写个

    2024年02月05日
    浏览(71)
  • k8s进阶3——资源配额、资源限制

    为什么会有资源配额管理? 可以提高集群稳定性,确保指定的资源对象在任何时候都不会超量占用系统物理资源,避免业务进程在设计或实现上的缺陷导致整个系统运行紊乱甚至意外宕机。 资源配额管理维度: 容器级别,定义每个Pod上资源配额相关的参数,比如CPU/Memory、

    2024年02月10日
    浏览(32)
  • Docker Compose资源限制

       防止容器占用过多资源,影响其他容器或宿主机 保证容器稳定运行,避免OOM等情况. OOM现象 :根据优先机制kill掉宿主机上最高的进程从而来释放空间,只要是宿主机的进程都可能被kill掉的。 进行资源隔离,提高安全性 使用docker-compose文件部署PostgreSQL,并设置资源限制。 1

    2024年02月15日
    浏览(41)
  • 19、Kubernetes核心技术 - 资源限制

    目录 一、概述 二、Kubernetes 中的资源单位 2.1、CPU资源单位 2.2、内存资源单位 三、Pod资源限制 四、namespace资源限制 4.1、为命名空间配置内存和 CPU 配额 4.2、为命名空间配置默认的内存请求和限制 4.3、为命名空间配置默认的CPU请求和限制 五、超过容器限制的内存 当定义 Po

    2024年01月20日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包