【算法实战】每日一题:设计一个算法,用最少数量的矩形覆盖一系列宽度为d、高度为w的矩形,且使用矩形不能超出边界
题目
设计一个算法,用最少数量的矩形覆盖一系列宽度为d、高度为w的矩形建筑物侧墙,且矩形不能超出边界。
核心思路
考虑这种结构
前面递增后面一个与前面的某个高度一致,这时候考虑最下面的覆盖(即都是从最下面向上覆盖)
考虑到使用栈,这里我们用列表代替
当栈不为空并且新元素比栈顶小,这时候存在这种可能结构成立,
对每个墙循环,如果新元素比栈顶元素大,就进栈;
反之,如果新元素比栈顶元素小,就使得栈顶元素出栈,继续比较新栈顶元素与当前使用新元素的大小,一直到比较到当前使用新元素和之前的某个元素的大小相同,此时计数器+1,表示找到这种结构+1
另外向上因为与数量一致,所以这里不考虑
伪代码
定义一个函数 main:定义一个变量 n,用于存储输入的整数。定义一个变量 ans,初始化为 0,用于存储最终答案。定义一个空列表 st,用于模拟栈结构。对于从 1 到 n 的每个整数 i:读取两个整数 d 和 w,并将它们分别存储到变量 d 和 w 中。当列表 st 不为空且 w 小于等于 st 中最后一个元素时:如果 st 中最后一个元素等于 w:将 ans 的值增加 1。从 st 中移除最后一个元素,因为当前 w 值破坏了递增结构。将 w 添加到 st 的末尾。打印 n 减去 ans 的结果。如果这个脚本是主程序:调用 main 函数。
CODE
def main():n = int(input())# 这种结构有多少种ans = 0st = []for i in range(1, n + 1):d, w = map(int, input().split())# 列表类似栈的结构while st and w <= st[-1]:# 找到该种结构种类数+1if st[-1] == w:ans += 1# pop掉,因为该种结构要求前面都是递增,而这里当前使用新元素已经是破坏了# 递增结构,所以直接丢掉,准备下一次的# 最后栈是空的,上面循环直接刷到最前面了st.pop()st.append(w)print(n - ans)if __name__ == "__main__":main()
END
相关文章:

【算法实战】每日一题:设计一个算法,用最少数量的矩形覆盖一系列宽度为d、高度为w的矩形,且使用矩形不能超出边界
题目 设计一个算法,用最少数量的矩形覆盖一系列宽度为d、高度为w的矩形建筑物侧墙,且矩形不能超出边界。 核心思路 考虑这种结构 前面递增后面一个与前面的某个高度一致,这时候考虑最下面的覆盖(即都是从最下面向上覆盖&#…...

外贸仓库管理软件:海外仓效率大幅度提升、避免劳动力积压
随着外贸业务的不断发展,如何高效管理外贸仓库,确保货物顺利流转,订单顺利处理,就变得非常重要。 现在通常的解决方案都是通过引入外贸仓库管理软件,也就是我们常说的海外仓WMS系统来解决。 今天我们就系统的探讨一下…...
6.8 LIBBPF API(七,bpf_core_read.h 函数,定义,枚举)
一,函数 void * bpf_rdonly_cast (const void *obj, __u32 btf_id) __ksym __weak 二,定义 __CORE_RELO(src, field, info) __builtin_preserve_field_info((src)->field,BPF_FIELD_##info) __CORE_BITFIELD_PROBE_READ(dst, src, fld) bpf_probe_read_kernel( \ (v…...

电脑卸载linux安装windows后每次开机都出现grub
原因分析 这是因为电脑硬盘中还存在linux系统的引导程序,并且启动顺序还在windows之前,有时候通过bios根本找不到它的存在,以至于每次windows开机出现grub之后都要输入exit退出linux的引导之后才能使得电脑进入windows,这个有时会…...

总结 HTTPS 的加密流程
一、前言 http是为了解决http存在的问题而在http基础上加入了SSL/TSL,在HTTP/2中TCP三次握手后会进入SSL/TSL握手,当SSL/TSL建立链接后,才会进行报文的传输。 二、HTTPS的混合加密 我们先来认识密钥: 密钥是用于加密和解密数据…...

Spring的FactoryBean多例问题
关于spring bean,我们了解的最多的还是单例,而多例bean,除了平时我们自己new的那些多实例外(但不属于IOC管理了),几乎很少能用到,而在spring 层面,FactoryBean刚好是多例的一个体现,…...

[nextjs]推荐几个很好看的模板网站
最近在做网站,折腾了 vue 框架,然后发现了 nextjs 框架,感觉这个做出来的网站配色很好看,然后又开始研究这个 网站配色好看是因为用的 tailwindcss,找网站过程中,发现了几个很好看的模板网站,在这里推荐下,或许你也能用得上 推荐第一个网站是: https://tailspark.co/ 有组件,也…...

《当微服务遇上Ribbon:一场负载均衡的华丽舞会》
在微服务的厨房里,如何确保每一道服务都恰到好处?揭秘Spring Cloud Ribbon如何像大厨一样精心调配资源,让负载均衡变得像烹饪艺术一样简单! 文章目录 Spring Cloud Ribbon 详解1. 引言微服务架构中的负载均衡需求Spring Cloud Rib…...

简单随机数据算法
文章目录 一,需求概述二,实现代码三、测试代码四、测试结果五、源码传送六、效果演示 一,需求概述 系统启动时,读取一组图片数据,通过接口返回给前台,要求: 图片随机相邻图片不重复 二&#…...
js画思维导图代码2
这段代码是一个使用Vue.js和D3.js构建的树形图组件。它是一个Vue组件,用于创建和显示一个交互式的树形结构图。下面是对这段代码的简要分析: 模板部分 (<template>): 定义了组件的HTML结构,包括一个隐藏的提示框(#tooltip)和一个用于显…...

使用 Flask 实现异步请求处理
文章目录 为什么需要异步请求处理?在 Flask 中实现异步请求处理使用 Flask-Cors 扩展 总结 在开发 Web 应用程序时,异步请求处理是提高性能和并发能力的重要方法之一。Flask 是一个轻量级的 Web 框架,它提供了易于使用的工具来实现异步请求处…...

关于c++的通过cin.get()维持黑框的思考
1.前言 由于本科没有学过c语言,研究生阶段接触c上手有点困难,今天遇到关于通过cin.get()来让黑框维持的原因。 2.思考 cin.get()维持黑框不消失的原因一言蔽之就是等待输入。等待键盘的输入内容并回车(一般是回车)后cin.get()才…...
fastadmin接口输出图片 自动拼接网站URL
先自定义常量 1.文件接口路径 修改核心文件 application\common\controller\Api.php/*** 构造方法* access public* param Request $request Request 对象*/public function __construct(Request $request null){$this->request is_null($request) ? Request::instance…...

VMware Workstation 不可恢复错误:(vmui) 错误代码0xc0000094
软件版本 vmware 17 错误情况 VMware Workstation 不可恢复错误:(vmui) Exception 0xc0000094 has occurred. 问题原因 VMware升级到17.0后,将虚拟机环境的【硬件兼容性】升级至Workstation 17.X后,无法修改设备参数。 解决办法 打开需…...

DockerNetwork
Docker Network Docker Network 是 Docker 引擎提供的一种功能,用于管理 Docker 容器之间以及容器与外部网络之间的网络通信。它允许用户定义和配置容器的网络环境,以便容器之间可以相互通信,并与外部网络进行连接。 Docker Network 提供了以…...

QT学习(20):QStyle类
Qt包含一组QStyle子类,这些子类(QWindowsStyle,QMacStyle等)模拟Qt支持的不同平台的样式,默认情况下,这些样式内置在Qt GUI模块中,样式也可以作为插件提供。 Qt的内置widgets使用QStyle来执行几…...
hadoop学习之MapReduce案例:输出每个班级中的成绩前三名的学生
hadoop学习之MapReduce案例:输出每个班级中的成绩前三名的学生 所要处理的数据案例: 1500100001 施笑槐,22,女,文科六班,406 1500100002 吕金鹏,24,男,文科六班,440 1500100003 单乐蕊,22,女,理科六班,359 1500100004 葛德曜,24,男,理科三班,421 15001…...

【亲测,安卓版】快速将网页网址打包成安卓app,一键将网页打包成app,免安装纯绿色版本,快速将网页网址打包成安卓apk
背景:部分客户需求将自己网站打包成app,供用户在浏览器安装使用、 网页网址快速生成app 准备材料操作流程第一步:打开HBuilder X新建项目第二步创建Wap2App项目第三步修改App图标第四步发布app第五步查看apk 准备材料 1.需要打包的网页 2.ap…...
学习thinkphp的循环标签
1.FOREACH标签 foreach标签的用法和PHP语法非常接近,用于循环输出数组或者对象的属性,用法如下: $list User::all(); View::assign(list,$list); 模板文件中可以这样输出 {foreach $list as $key>$vo } {$vo.id}:{$vo.name} {/foreac…...
根据标签名递归读取xml字符串中element
工具类: /*** 根据标签名递归读取xml字符串中element* 例:* String xml * "<req>\n" * "<tag1></tag1>\n" * "<tag2>\n" * " <tag4></tag4>\n" * "</tag2>\n&…...

工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...