题解 P2638 安全系统 (dp递推/组合计数)

博客介绍了如何解决一道名为'安全系统'的问题,涉及n个箱子,a个百球和b个黑球的装箱方案计数。解题方法包括递推和使用隔板法进行组合计数。递推方法通过状态表示f(i,j,k)进行状态转移,而隔板法则是通过在球队列末尾添加假球,将问题转化为经典的组合计数问题。" 118670666,10571818,NFS与WEB服务器整合实践,"['Linux', '运维', 'NFS服务器', 'web服务', '资源共享']
摘要由CSDN通过智能技术生成

题目源自洛谷

题目大意:
原版题目太阴间了,直接把人误导+过样例,然后一交全wa掉。。。。
n个箱子,a个百球,b个黑球,求装箱方案数,重点是球可以有剩余不装的,箱子可以是空的。

解题思路:

<1. 递推

状态表示:f(i,j,k)表示前i个箱子装j个白球,k个黑球的方案数。
状态转移
不同状态之间的联系就是后面的状态比前面的状态多了cnt1个白球,cnt2个黑球,所以转移时我们要枚举i,j,k,cnt1,cnt2五个变量(捂脸qaq)。

上一份用了高精的代码:

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

int n,a,b;
int dp[55][55][55];

__int128 read()
{
   
    __int128 x=0,f=1;
    char ch=getchar();
    while(!isdigit(ch)&&ch!='-')ch=getchar();
    if(ch=='-')f=-1,ch=getchar();
    while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
    return f
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值