首页 > 其他分享 >洛谷题单指南-数学基础问题-P2638 安全系统

洛谷题单指南-数学基础问题-P2638 安全系统

时间:2024-04-09 16:48:14浏览次数:26  
标签:指南 盒子 红球 int 洛谷题 long P2638 放入 个球

原题链接:https://www.luogu.com.cn/problem/P2638

题意解读:把a个红球、b个黑球放入n个盒子,求所有的方法。

解题思路:

盒子中可以放也可以不放,可以放任意个,因此,题目可以转化为将i个红球(0<=i<=a),j个黑球(0<=j<=b)放入n个盒子的方案数之和,

设f(n, i, j)表示将一个红球、j个黑球放入n个盒子的方案数,本题答案用代码片段表示为

for(int i = 0; i <= a; i++)
{
    for(int j = 0; j <= b; j++)
    {
        ans += f(n, i, j);
    }
}

问题就转换为如何计算f(n, i, j),也就是把i个黑球、j个红球放入n个盒子有多少种方法

设g(n, x)表示把x个球放入n个盒子有多少种方法,盒子可以为空

则根据乘法原理有:f(n, i, j) = g(n, i) * g (n, j)

现在问题集中在如何计算g(n, x),即把x个球放入n个盒子有多少种方法(盒子可以为空)?

问题进一步转换为:把x + n个球放入n个盒子有多少种方法(每个盒子至少有1个球)?

这就是经典的插板法:

x + n个球中间有x + n - 1个空隙,可以插n - 1块板,方案数为C(x + n - 1, n - 1)

如上,问题得解。

100分代码:

#include <bits/stdc++.h>
using namespace std;

int n, a, b;

unsigned long long c[55][55], ans;

int main()
{
    cin >> n >> a >> b;

    //初始化组合数
    for(int i = 0; i < 50; i++)
    {
        for(int j = 0; j <= i; j++)
        {
            if(j == 0) c[i][j] = 1;
            else c[i][j] = c[i - 1][j] + c[i - 1][j - 1];
        }
    }

    for(int i = 0; i <= a; i++)
    {
        for(int j = 0; j <= b; j++)
        {
            ans += c[i + n - 1][n - 1] * c[j + n - 1][n - 1];
        }
    }
    cout << ans;

    return 0;
}

仍有一个测试点过不了,大概率是超出unsigned long long,需要上高精度来计算组合数以及方案数了,忽略之。

标签:指南,盒子,红球,int,洛谷题,long,P2638,放入,个球
From: https://www.cnblogs.com/jcwy/p/18124280

相关文章

  • 电车安装家用充电桩指南
    这段时间安装了电车的家用充电桩,实现在小区就可以充电,记录一下。前因这段时间用车比较多,导致每隔2,3天就要到外面充电,白天没空去充,要晚上才能去,充电1小时+,来回0.5小时+,基本上2个小时就没了,有时充完电回到家,都10点多了,甚至是下雨天也得出去充,实在是不方便。分析了安装家用充电桩的......
  • 实用指南:使用Pytest Allure测试框架添加用例失败截图
    前言在我们进行软件测试的过程中,我们提交的测试报告缺少一些详细的附件,尤其是用例失败时候的截图,更方便我们去查看具体的情况,我们在进行测试时会使用allure+pytest来生成测试报告,本文我们就来介绍一下在allure测试报告中添加用例失败截图。钩子函数准备我们可以使用pytest_run......
  • Gartner发布NDR网络检测和响应市场指南:全球29家及中国6家厂商
    网络检测和响应市场(NDR)持续增长,并通过IaaS部署扩展到混合网络场景。安全和风险管理领导者应在更加自动化的安全运营助手的背景下,重新将NDR视为人工智能分析的主要提供者。主要发现网络检测和响应( NDR)通常用作补充检测和响应技术,作为更广泛的安全运营中心(SOC)工......
  • [转载] 推荐给Java新手的学习指南
    以下肯定是不完整的列表,欢迎补充】【好像还缺什么:缓存技术。欢迎补充】Java是一个通用的编程语言,其实可以干很多事,怎么学Java就看怎么用了。但有一些一般的步骤:1.熟悉一种文本编辑器,比如Vim,Emacs,VSCode,GEdit,Kate,TextMate等(Notepad++的作者支持台**独,就不推荐了)。知道哪......
  • 洛谷题单指南-数学基础问题-P3913 车的攻击
    原题链接:https://www.luogu.com.cn/problem/P3913题意解读:车所在的行、列一共有多个个格子。解题思路:假设3*3的棋盘,有三个车分析得知,三个车覆盖了第1、2两行,第2、3两列,覆盖的格子数用公式计算就是2*3+2*3-2*2=8也就是两行格子数加两列格子数再减去交叉点。因此......
  • Stable diffusion 初学者指南
    1.Stablediffusion初学者指南想掌握StableDiffusionAI技术吗?这份初学者指南专为完全没接触过StableDiffusion或任何AI图像生成器的新手设计。跟随本指南,你将了解StableDiffusion的基本情况,并获得一些实用的入门技巧。什么是Stablediffusion?StableDiffusionAI是一种......
  • 「Java开发指南」如何利用MyEclipse启用Spring DSL?(一)
    本教程将引导您通过启用SpringDSL和使用ServiceSpringDSL抽象来引导Spring和Spring代码生成项目,本教程中学习的技能也可以很容易地应用于其他抽象。在本教程中,您将学习如何:为SpringDSL初始化一个项目创建一个模型包创建一个服务和操作实现一个服务方法启用JAX-WS和DWR......
  • XML文档节点导航与选择指南
    XPath(XMLPathLanguage)是XSLT标准的主要组成部分。它用于在XML文档中浏览元素和属性,提供了一种强大的定位和选择节点的方式。XPath的基本特点代表XML路径语言:XPath是一种用于在XML文档中导航和选择节点的语言。路径样式语法:XPath使用路径表达式的“路径样式”语法来......
  • 实践指南:EdgeOne与HAI的梦幻联动
    在当今快速发展的数字时代,安全和速度已成为网络服务的基石。EdgeOne,作为腾讯云提供的边缘安全加速平台,以其全球部署的节点和强大的安全防护功能,为用户提供了稳定而高效的网络体验。而HAI(HyperApplicationInventor),腾讯云推出的高性能应用服务,通过其易用的图形化界面和丰富的模型库,......
  • 洛谷题单指南-数学基础问题-P2789 直线交点数
    原题链接:https://www.luogu.com.cn/problem/P2789题意解读:n条直线可以形成不同交点数的方案数。解题思路:对于n=1、2、3、4的情况进行模拟:n=1时,有1种不同的交点数n=2时,有2种不同的交点数n=3时,有3种不同的交点数n=4时,有5种不同的交点数对n=4的情况,分情况讨......