思维+01背包,LeetCode LCP 47. 入场安检

一、题目

1、题目描述

「力扣挑战赛」 的入场仪式马上就要开始了,由于安保工作的需要,设置了可容纳人数总和为 M 的 N 个安检室,capacities[i] 记录第 i 个安检室可容纳人数。安检室拥有两种类型:

  • 先进先出:在安检室中的所有观众中,最早进入安检室的观众最先离开
  • 后进先出:在安检室中的所有观众中,最晚进入安检室的观众最先离开

c24754f1a5ff56989340ba5004dc5eda.gif

恰好 M+1 位入场的观众(编号从 0 开始)需要排队依次入场安检, 入场安检的规则如下:

  • 观众需要先进入编号 0 的安检室
  • 当观众将进入编号 i 的安检室时(0 <= i < N),
    • 若安检室未到达可容纳人数上限,该观众可直接进入;
    • 若安检室已到达可容纳人数上限,在该观众进入安检室之前需根据当前安检室类型选择一位观众离开后才能进入;
  • 当观众离开编号 i 的安检室时 (0 <= i < N-1),将进入编号 i+1 的安检室接受安检。

若可以任意设定每个安检室的类型,请问有多少种设定安检室类型的方案可以使得编号 k 的观众第一个通过最后一个安检室入场。

注意:

  • 观众不可主动离开安检室,只有当安检室容纳人数达到上限,且又有新观众需要进入时,才可根据安检室的类型选择一位观众离开;
  • 由于方案数可能过大,请将答案对 1000000007 取模后返回。

2、接口

class Solution {
public:int securityCheck(vector<int>& capacities, int k) {}   
};

3、原题链接

LCP 47. 入场安检


二、解题报告

1、思路分析

考虑如何让第k个人第一个走完安检呢?

对于一个容量为x的栈而言,当它装了x - 1个人之后,就会退化为一个容量为1的队列

除非后面没人再进来了

那么问题就转化为了 构造 若干个栈,其容量 - 1 的和为k,其余全为队列的方案数

这就变成了01背包问题求方案数了

2、复杂度

时间复杂度: O(NK)空间复杂度:O(K)

3、代码详解

 ​
constexpr int P = 1'000'000'007;
class Solution {
public:int securityCheck(vector<int>& capacities, int k) {vector<int> f(k + 1);f[0] = 1;for (int x : capacities) for (int j = k; j >= x - 1; -- j) {f[j] += f[j - x + 1];if (f[j] >= P) f[j] -= P;}return f[k];}   
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/48766.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git笔记:(上传Git、Git获取文件版本、删除、统计)

目录 一、上传文件到github 1.1 配置用户名和邮箱 1.2 初始化本地仓库 1.3 添加项目目录下所有文件至本地仓库 1.4 使用如下命令加入注释提交 1.5 将本地仓库与远程仓库相连接 1.6 将本地仓库中的文件推送至指定的远程仓库中 二、git获取不同版本 2.1 git下载特定历史…

【SpringBoot3】全局异常处理

【SpringBoot3】全局异常处理 一、全局异常处理器step1&#xff1a;创建收入数字的页面step2:创建控制器&#xff0c;计算两个整数相除step3:创建自定义异常处理器step5&#xff1a;创建给用提示的页面step6&#xff1a;测试输入&#xff08;10/0&#xff09; 二、BeanValidato…

【Python正则表达式】:文本解析与模式匹配

文章目录 1.正则表达式2. re模块3.修饰符3.元字符3-1 字符匹配元字符3-2 重复次数限定元字符3-3 字符集合匹配元字符3-4 分组元字符3-5 边界匹配元字符3-6 字符类别匹配元字符 4.技巧4-1 贪婪与非贪婪 5.案例 1.正则表达式 正则表达式面向什么样的问题&#xff1f; 1、判断一个…

【Linux】线程——线程互斥的概念、锁的概念、互斥锁的使用、死锁、可重入和线程安全、线程同步、条件变量的概念和使用

文章目录 Linux线程4. 线程互斥4.1 线程互斥的概念4.2 锁的概念4.2.1 互斥锁的概念4.2.2 互斥锁的使用4.2.3 死锁4.2.4 可重入和线程安全 5. 线程同步5.1 条件变量的概念5.2 条件变量的使用 Linux线程 4. 线程互斥 我们之前使用了线程函数实现了多线程的简单计算模拟器。 可以…

如何在 Android 中删除和恢复照片

对于智能手机用户来说&#xff0c;相机几乎已经成为一种条件反射&#xff1a;你看到值得注意的东西&#xff0c;就拍下来&#xff0c;然后永远保留这段记忆。但如果那张照片不值得永远保留怎么办&#xff1f;众所周知&#xff0c;纸质快照拿在手里很难舍弃&#xff0c;而 Andro…

php通用防伪溯源查询系统可自定义字段

性能描述&#xff1a; 1. 适合中小规模查询&#xff0c;建议100万条以内(具体视服务器配置)。 2. 自定义前台是否使用验证码&#xff0c;即可以自行开启/关闭验证码。 3. 灵活支持N列内容&#xff0c;只要前几列按照规则;其余列均自定义内容。 4. 可单个新加&#xff0c;也…

算法日记day 14(滑动窗口最大值)

一、滑动窗口最大值 题目&#xff1a; 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1&#xff1a; 输入&#x…

【测开能力提升-fastapi框架】fastapi能力提升 - ORM增删改查操作

1 ORM操作 注释&#xff1a; fastapi缺少合适的ORM&#xff0c;官方推荐&#xff1a;sqlalchemy&#xff0c;但我们就不听官方的话&#xff0c;我们选择使用Tortoise ORM&#xff0c;因为他是支持异步的 1.1 tortoise ORM支持的数据库 PostgreSQL&#xff08;使用asyncpg&am…

上市公司产品市场竞争程度指数(1990-2023年)

数据来源&#xff1a;基础数据来源于上市公司年报以及证监会及统计局时间跨度&#xff1a; 1990-2023年数据范围&#xff1a;企业及行业层面数据指标&#xff1a;本数据包含赫芬达尔指数/行业集中度/勒纳指数三个数据: 行业代码 行业名称 统计截止日期 市场类型 是否…

指针!!C语言(第二篇)

目录 一. 数组名的理解 二. 一维数组传参的本质 三. 冒泡排序法 四. 二级指针与指针数组 五. 字符指针变量与数组指针 一. 数组名的理解 在我们对指针有了初步的理解之外&#xff0c;今天我们来掌握一些新的知识就是数组与指针&#xff0c;第一个对数组名的了解&#xff…

Java8-21新特性

简介 由于Java官方最近更新越来越频繁&#xff0c;而长期支持维护的版本LTS版每隔几年才推出一个&#xff0c;大规模商用的JDK只可能选择LTS版&#xff0c;因此这里只简单记录JDK8&#xff0c;11&#xff0c;17&#xff0c;21。 jdk8 Lambda表达式&#xff1a; Lambda表达式…

PyQt5学习路线

后续会根据该文章的路线逐步发布对应的教程&#xff0c;订阅专栏不迷路&#x1f970; 本专栏纯干货&#x1f929; 学习Python的PyQt5库&#xff0c;可以遵循以下的学习路线&#xff1a; 1. Python基础 掌握Python语法&#xff1a;确保你熟悉Python的基本语法&#xff0c;包括…

#三元运算符(python/java/c)

引入&#xff1a;什么是三元运算符呢&#xff1f;无疑其操作元有三个&#xff0c;一个是条件表达式&#xff0c;剩余两个为值&#xff0c;条件表达式为真时运算取第一个值&#xff0c;为假时取第二个值。 一 Python true_expression if condition else false_expressi…

matlab永磁同步电机反馈试验装置的设计和永磁同步电机仿真

1、内容简介 略 85-可以交流、咨询、答疑 2、内容说明 略 摘要&#xff1a;得益于电力电子器件及控制技术的高速发展&#xff0c;使得电机的应用越来越方便及精确&#xff0c;适应了实际应用对电机性能及质量提出的更高要求和标准。同时电机测试技术也因为电力电子技术的发…

2024.7.22

关于DSP资料分享 https://www.youtube.com/watch?vI8_E1ppC3-Q

AI多模态实战教程:面壁智能MiniCPM-V多模态大模型问答交互、llama.cpp模型量化和推理

一、项目简介 MiniCPM-V 系列是专为视觉-语⾔理解设计的多模态⼤型语⾔模型&#xff08;MLLMs&#xff09;&#xff0c;提供⾼质量的⽂本输出&#xff0c;已发布4个版本。 1.1 主要模型及特性 &#xff08;1&#xff09;MiniCPM-Llama3-V 2.5&#xff1a; 参数规模: 8B性能…

Oracle(6)什么是重做日志文件(Redo Log File)?

重做日志文件&#xff08;Redo Log File&#xff09;是Oracle数据库中用于记录所有对数据库进行的更改的日志文件。这些文件在数据库崩溃恢复、实例恢复和介质恢复中起着至关重要的作用。 主要特点 记录更改&#xff1a;重做日志文件记录了所有对数据库进行的更改&#xff0c…

将Excel或CSV文件导入MySQL

数据库信息 版本:mysql-5.7.22 字符集如下 一、将 Excel 文件导入 MySQL,此时 MySQL 中不存在该表。 在数据库中,右键-导入向导

C++ 入门16:STL 容器之集合(set)与多重集合(multiset)

往期回顾&#xff1a; C 入门13&#xff1a;异常处理-CSDN博客 C 入门14&#xff1a;STL 容器之向量&#xff08;vector&#xff09;-CSDN博客 C 入门15&#xff1a;STL 容器之列表&#xff08;list&#xff09;-CSDN博客 C 入门16&#xff1a;STL 容器之集合&#xff08;set&a…

刚刚 威尼斯影评人周公布 2024 年电影阵容 包括敏感纪录片《本土》

《本土》 威尼斯影评人周是威尼斯电影节专门为首次拍摄电影的人设立的侧边活动&#xff0c;该活动公布了第 39 届威尼斯电影节的七部竞赛片和两部非竞赛片的入选名单&#xff0c;第 39 届威尼斯电影节将于 8 月 28 日至 9 月 7 日举行。 较为及时的作品之一是美国导演迈克尔普…