洛谷P2638 安全系统

server/2025/2/7 11:34:16/

安全系统

题目描述

特斯拉公司的六位密码被轻松破解后,引发了人们对电动车的安全性能的怀疑。李华听闻后,自己设计了一套密码:

  • 假设安全系统中有 n n n 个储存区,每个储存区最多能存储存 2 2 2 种种类不同的信号(可以不储存任何信号)。有 0 0 0 1 1 1 这两种信号,其中 0 0 0 a a a 个, 1 1 1 b b b 个,单独一个 0 0 0 1 1 1 算一个信号。现要将这些信号储存在储存区中, 0 0 0 1 1 1 可以不用全部储存,一个储存区可以存放任意多个 0 0 0 和任意多个 1 1 1。一种不同的储存方案经过李华处理后就将是一串不同的密码。

现在给出 n , a , b n,a,b n,a,b,求可能的不同储存方案的个数。

输入格式

第一行:共 3 3 3 个整数, n , a , b n,a,b n,a,b

输出格式

第一行:一个整数,表示方案个数。

样例 #1

样例输入 #1

2 1 1

样例输出 #1

9

提示

所有 9 9 9 种方案如下:

储存区 1 1 1储存区 2 2 2
NULL \verb!NULL! NULL NULL \verb!NULL! NULL
0 0 0 NULL \verb!NULL! NULL
1 1 1 NULL \verb!NULL! NULL
NULL \verb!NULL! NULL 0 0 0
NULL \verb!NULL! NULL 1 1 1
0 , 1 0,1 0,1 NULL \verb!NULL! NULL
NULL \verb!NULL! NULL 0 , 1 0,1 0,1
1 1 1 0 0 0
0 0 0 1 1 1

对于全部数据, a , b ≤ 50 a,b\le 50 a,b50 n + a ≤ 50 n+a\le 50 n+a50 n + b ≤ 50 n+b\le 50 n+b50


upd 2022.10.22 \text{upd 2022.10.22} upd 2022.10.22:新增加一组 Hack 数据。

###### 解题心得:这道题我也想到了用组合数无奈实力有限不知道这么处理,跑去看了题解~~

题目分析:引用大佬题解

引用大佬题解
然后就是痛苦的高中组合数了,每次做这种题都很折磨!!! 本题用到了隔板法
在这里插入图片描述

注意:然后我们可以先用杨辉三角来算组合数,再来看一下数据范围。这里的组合数需要算到多大呢?容易看出最大总元素数(就是 C 的那个下标)是 n+max(a,b) - 1,因此需要用 unsigned long long来存数。

代码部分:

#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ULL;
const int N = 110;ULL c[N][N];
int n,a,b;
ULL ans;void Init()
{c[1][0] = 1,c[1][1] = 1;for(int i = 2; i < N; i++){c[i][0] = 1;for(int j = 1; j <= i; j++)c[i][j] = c[i - 1][j - 1] + c[i - 1][j];}
}int read()
{int s=0,f=1;char ch=getchar();while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}while (ch>='0'&&ch<='9'){s=s*10+ch-'0';ch=getchar();}return s*f;
}int main() {n = read(),a = read(),b = read();Init();for(int i = 0; i <= a; i++)for(int j = 0; j <= b; j++){ans += c[n + i - 1][n - 1] * c[n + j - 1][n - 1];}cout<<ans;return 0;
}

http://www.ppmy.cn/server/165672.html

相关文章

【大数据技术】搭建完全分布式高可用大数据集群(ZooKeeper)

搭建完全分布式高可用大数据集群(ZooKeeper) apache-zookeeper-3.8.4-bin.tar.gz注:请在阅读本篇文章前,将以上资源下载下来。 写在前面 本文主要介绍搭建完全分布式高可用集群 ZooKeeper 的详细步骤。 注意: 统一约定将软件安装包存放于虚拟机的/software目录下,软件…

ES6 变量解构赋值总结

1. 数组的解构赋值 1.1 基本用法 // 基本数组解构 const [a, b, c] [1, 2, 3]; console.log(a); // 1 console.log(b); // 2 console.log(c); // 3// 跳过某些值 const [x, , y] [1, 2, 3]; console.log(x); // 1 console.log(y); // 3// 解构剩余元素 const [first, ...re…

uniapp小程序自定义中间凸起样式底部tabbar

我自己写的自定义的tabbar效果图 废话少说咱们直接上代码&#xff0c;一步一步来 第一步&#xff1a; 找到根目录下的 pages.json 文件&#xff0c;在 tabBar 中把 custom 设置为 true&#xff0c;默认值是 false。list 中设置自定义的相关信息&#xff0c; pagePath&#x…

如何查看:Buildroot所使用Linux的版本号、gcc交叉编译工具所使用的Linux的版本号、开发板上运行的Linux系统的版本号

定义编号①②③的含义 将“Buildroot所使用Linux的版本号”编号为① 将“gcc交叉编译工具所使用的Linux的版本号”编号为② 将“开发板上运行的Linux系统的版本号”编号为③ 查看①和②的共同方法(通过sysroot查看) 由于此二者都有目录sysroot&#xff0c;而通过目录sysroot…

3D图形学与可视化大屏:什么是片段着色器,有什么作用。

一、片段着色器的概念 在 3D 图形学中&#xff0c;片段着色器&#xff08;Fragment Shader&#xff09;是一种在图形渲染管线中负责处理片段&#xff08;像素&#xff09;的程序。它的主要任务是确定每个像素的颜色和其他属性&#xff0c;如透明度、深度等。片段着色器是可编程…

K8s介绍代理外部服务的svc几种方式

在 Kubernetes 中&#xff0c;若需让集群内应用访问外部服务&#xff0c;可通过以下 **Service 配置方式**实现代理&#xff1a; --- ### 1. **ClusterIP Service 手动维护 Endpoints** - **原理**&#xff1a;创建 ClusterIP 类型的 Service 并手动指定 Endpoints&#xff…

iOS UI开发

UIView&#xff1a; 生命周期&#xff1a; UITabBar&#xff1a; UINavigationController&#xff1a; UIWindow&#xff1a; UIWindow作为容器是一个基础画面 storyboard会自动给我们创建一个UIWindow 自己创建一个呢&#xff1a; 更改一下看区别 代理&#xff1a; 代理方法…

深度学习系列--03.激活函数

一.定义 激活函数是一种添加到人工神经网络中的函数&#xff0c;它为神经网络中神经元的输出添加了非线性特性 在神经网络中&#xff0c;神经元接收来自其他神经元的输入&#xff0c;并通过加权求和等方式计算出一个净输入值。激活函数则根据这个净输入值来决定神经元是否应该…