【备战蓝桥杯青少组】第二天 奇特的砖墙
真题
第十四届省赛 编程题 第5题
工人砌了一面奇特的砖墙,该墙由N列砖组成(1≤N≤1e6),且每列砖的数量为Ki(1≤Ki≤1e4,相邻砖块之间无缝隙),每块砖的长宽高都为1。小蓝为了美化这面墙,需要在这面墙中找到一块面积最大的矩形用于涂鸦,那么请你帮助小蓝找出最大矩形,并输出其面积。
例如:N=6,表示这面墙有6列,每列砖的数量依次为3、2、1、5、6、2,如下图:
图中虚线部分是一块面积最大的矩形,其面积为10.
输入描述:
第一行输入一个正整数N(1≤N≤1e6),表示这面砖墙由N列砖组成
第二行输入N个正整数Ki(1≤Ki≤1e4),依次表示每列砖的数量,正整数之间以一个空格隔开输出描述:
输出一个正整数,表示最大矩形的面积样例输入:
6
3 2 1 5 6 2样例输出:
10
解题思路
1.递归(标准解法)
找到最矮的列,分别计算左中右三个面积(分治),取其最大。
中:最矮列的列高*本区域的宽度(贪心假设)
左:最矮列左侧区域的最大矩形(递归调用)
右:最矮列右侧区域的最大矩形(递归调用)
2.伸展(娃儿创新)
遍历每一列,分别计算此列为中心,向两侧延展,直至遇到较矮的列,所形成的矩形的面积。
各面积存入列表,取其最小值。
代码
思路一 (递归版)
def tj1(wall):i=wall.index(min(wall))sL=tj1(wall[:i]) if i>0 else 0sR=tj1(wall[i+1:]) if i<len(wall)-1 else 0return max(wall[i]*len(wall),sL,sR)
思路二(伸展版)
def tj2(wall):sL=[]for i in range(len(wall)):s=1; h=wall[i]for j in range(i,0,-1):if(h>wall[j-1]):s+=i-j; breakelse:s+=i-1for j in range(i,len(wall)-1):if(h>wall[j+1]):s+=j-i; breakelse:s+=len(wall)-1-isL.append(s*h)return max(sL)
(增加一个用while代替for...else的版本)
def tj2w(wall): # while版sMax=0; N=len(wall)for i in range(N):w=1; h=wall[i]j=iwhile(j>0 and h<=wall[j-1]): j-=1w+=i-jj=iwhile(j<N-1 and h<=wall[j+1]): j+=1w+=j-isNew=w*hif(sNew>sMax): sMax=sNewreturn sMax
测试代码
def timeit(num=100):t1=[];t2=[];size=[]for i in range(num):K=random.choices(range(1,1000001),k=random.randint(1,10000)); N=len(K)size.append(N)t0=time.time()ans=tj2(K)t2.append(time.time()-t0)t0=time.time()ans=tj1(K)t1.append(time.time()-t0)return t1,t2,size
结论


两种思路都很容易实现和调试成功,从用时看标准版整体稍多于娃儿的思路的1/2,仅2%的用例娃儿胜出(不排除python的time模块计时不准)。
但从孩子的学习成果来看,我还是感到非常欣慰,特别是python to C++时,很显然伸展版的思路更契合(不用做列表的切片)
相关文章:
【备战蓝桥杯青少组】第二天 奇特的砖墙
真题 第十四届省赛 编程题 第5题 工人砌了一面奇特的砖墙,该墙由N列砖组成(1≤N≤1e6),且每列砖的数量为Ki(1≤Ki≤1e4,相邻砖块之间无缝隙),每块砖的长宽高都为1。小蓝为了美化这面…...
图像处理 -- 仿射变换之Affine Transformation
仿射变换(Affine Transformation) 仿射变换是图像处理中的一种基本操作,通过线性变换和平移实现图像的几何变换。仿射变换包括旋转、缩放、平移、翻转、错切(shear)等操作。 1. 仿射变换的作用 旋转:将图…...
Nuxt3【项目配置】nuxt.config.ts
按环境添加配置 export default defineNuxtConfig({// 生产环境的配置$production: {routeRules: {/**: { isr: true }}},// 开发环境的配置$development: {//} })运行时的配置 runtimeConfig export default defineNuxtConfig({runtimeConfig: {// 只在服务器端可用的私有键ap…...
中智讯“2024高校人工智能边缘应用项目实战师资培训班”圆满举办
7月24日——7月28日,中智讯“2024高校人工智能&边缘应用项目实战师资培训班”在昆明理工大学成功举办。本次培训由昆明理工大学人工智能产业学院主办,中智讯(武汉)科技有限公司承办。来自昆明理工大学、西南林业大学、云南民族…...
IIS发布打包后文件
1.打开IIS软件 2 添加网站, 自定义网站名称-选择要放置的资源路径-选择IP地址 3.打开放置的资源目录放置打包后文件 4.选择浏览 搜索不到IIS可进行一下操作 控制面板-程序和功能-启用或关闭windows功能-勾选IIS...
四个自定义 SHAP 图
超越 Python 包,创建 SHAP 值的定制可视化 SHAP 值是了解模型如何进行预测的绝佳工具。SHAP 包提供了许多可视化效果,使这个过程更加简单。话虽如此,我们不必完全依赖这个包。我们可以通过创建自己的 SHAP 图来进一步了解模型的工作原理。在本…...
为什么使用HTTPS?
HTTPS现在是所有Web活动的首选协议,因为它是用户保护敏感信息的最安全方式。 HTTPS不仅对请求用户信息的网站至关重要。除了用户直接发送的信息外,攻击者还可以从不安全的连接中跟踪行为和身份数据。 HTTP为网站所有者带来的好处除了数据安全之外&…...
软件设计-系统架构师(五十五)
1在网络规划中,政府内外网之间应该部署网络安全防护设备。在下图部署的设备A是(),对设备A作用描述错误的是()。 问题1 A IDS B 防火墙 C 网闸 D UTM 问题2 A 双主机系统,即使外网被黑客攻击…...
三分钟学会线缆电流估算
今天带你用三分钟的时间,学会电源线承受电流估算,不浪费时间,直接开始吧。 工作温度30℃,长期连续90%负载下的载流量 1.5平方毫米――14A 2.5平方毫米――26A 4平方毫米――32A 6平方毫米――47A 16平方毫米――92A 25平方毫米――120A 3…...
Snipaste 的一款替代工具 PixPin,支持 gif 截图、长截图和 OCR 文字识别,功能不是一点点强!
Snipaste 的一款替代工具 PixPin,支持 gif 截图、长截图和 OCR 文字识别,功能不是一点点强! PixPin 的名字来源于“Pixel Pin”,简单来说是一个截图、贴图的工具,但是 PixPin 以截图和贴图两大功能为核心做了大量的优…...
Oracle基础教程
体系结构 数据库 一个操作系统仅有一个数据库 实例 拥有一系列后台进程和存储结构,一个数据库可拥有一个或多个实例,一般只有1个实例 数据文件(.dbf/.ora) 数据文件是数据库的物理存储单元,一个表空间由一个或多…...
电脑如何录屏?三款电脑录屏工具分享
电脑如何录屏?作为一个经常需要录制电脑屏幕大职场人,不是为了制作教程、记录会议,就是偶尔想自己做个游戏解说视频。市面上的录屏软件琳琅满目,经过一番尝试和比较,我选出了三款我个人认为表现不错的软件,…...
idea2024建立maven web项目servlet 6.0
(1) 下载好tomcat 10.1.28 打开tomcat.apache.org官网下载 (2)配置好maven (3)idea 2024打开,建立项目 选择maven java项目 (4)在项目src/main/下 建立webapp/WEB-INF目录,在…...
游戏开放式新手引导框架设计
强制性引导:只能点某个按钮 优:程序简单 缺: 玩家体验差 开放式引导:不强制点 优:玩家体验好 缺: 程序复杂 需求分析: 1.开放式引导,引导是到达某个条件后进行一系列行为(…...
【Hot100】LeetCode—189. 轮转数组
目录 1- 思路自定义 reverse 翻转函数 2- 实现⭐189. 轮转数组——题解思路 3- ACM 实现 原题链接:189. 轮转数组 1- 思路 自定义 reverse 翻转函数 2- 实现 ⭐189. 轮转数组——题解思路 class Solution {public void rotate(int[] nums, int k) {k % nums.lengt…...
javaweb学习之HTML(一)
推荐学习使用网站 w3school 在线教程 认识HTML HTML(HyperText Markup Language)是超文本标记语言,它是一个用于创建网页和网页应用程序的标准标记语言。HTML文档由一系列的元素(elements)组成,这些元素通…...
项目实战:Qt+Opencv相机标定工具v1.3.0(支持打开摄像头、视频文件和网络地址,支持标定过程查看、删除和动态评价误差率,支持追加标定等等)
若该文为原创文章,转载请注明出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/141334834 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、Op…...
【数据结构】汇总八、排序算法
排序Sort 【注意】本章是 排序 的知识点汇总,全文1万多字,含有大量代码和图片,建议点赞收藏(doge.png)!! 【注意】在这一章,记录就是数据的意思。 排序可视化网站: D…...
Java-分割list并执行多线程任务的工具类
要创建一个用于分割列表并执行多线程任务的工具类,你可以使用 Java 的 ExecutorService 和 ThreadPoolExecutor 来实现。下面是一个详细的示例,展示了如何创建这样一个工具类。 步骤 1: 创建线程池 首先,创建一个线程池来执行任务。 步骤 2: 分割列表 接着,定义一个方…...
Springboot-从服务器获取一个输入流,转成视频文件存到oss
要在Spring Boot应用中从服务器获取一个输入流,然后将该流转换为视频文件并存储到阿里云 OSS中,你可以遵循以下步骤: 设置阿里云OSS客户端:首先,你需要配置阿里云OSS客户端,以便能够上传文件到OSS。 获取输入流:使用HTTP客户端(如RestTemplate或WebClient)从服务器…...
模块联邦和monorepo比较和pnpm包管理工具
本篇文章用于个人学习梳理,模块联邦和monorepo项目的用法的区别比较,下面是我通过豆包生成的核心区别: 对比维度Monorepo模块联邦 (Module Federation)核心目标统一管理多项目代码,提升开发效率(复用、版本、依赖&…...
数字化转型架构下的数据安全治理指南:以数据安全为核心的安全立体防御体系、数据安全体系、数据安全现状评估报告···(附相关资料)
微信公众号:木木自由,更多数据分析,经营分析、财务分析、商业分析、数据治理、数据要素、数据资产干货以及资料分享木木自由 数据分析领地Digital Technology Summit在数字经济深度发展的今天,数字化转型已成为企业生存与发展的…...
YOLOv8训练Visidron小目标检测数据集YOLO训练结果模型➕数据集可直接使用在读博士,欢迎打扰
YOLOv8训练Visidron小目标检测数据集 YOLO训练结果模型➕数据集 可直接使用 在读博士,欢迎打扰...
高德地图调用GeoServer WMTS服务报错?手把手教你修改源码解决TILEMATRIX兼容问题
高德地图与GeoServer WMTS服务兼容性深度解决方案 当高德地图JSAPI调用GeoServer提供的WMTS服务时,开发者常会遇到Unknown TILEMATRIX报错。这个看似简单的错误背后,隐藏着两种地图服务在坐标系处理和参数传递机制上的本质差异。本文将带您深入问题根源&…...
FinalBurn Neo:让经典街机游戏在现代设备上完美重生
FinalBurn Neo:让经典街机游戏在现代设备上完美重生 【免费下载链接】FBNeo FinalBurn Neo - We are Team FBNeo. 项目地址: https://gitcode.com/gh_mirrors/fb/FBNeo FinalBurn Neo是一款专注于经典街机游戏的开源模拟器,它基于FinalBurn和早期…...
云安全部署防护成为企业刚需,合规+高效部署指南
企业上云已从可选变为必选项,公有云、私有云、混合云的广泛应用,让企业IT架构更敏捷、成本更可控,但与此同时,云环境的安全风险也呈爆发式增长。Gartner预测,到2025年,99%的云安全事件将由客户配置错误引发…...
实战演练:基于快马平台生成电商全流程自动化测试并与Jenkins集成
今天想和大家分享一个最近用InsCode(快马)平台完成的电商自动化测试实战项目。这个项目模拟了真实电商平台的核心业务流程,从用户注册登录到完成支付的全流程测试,特别适合需要快速搭建自动化测试体系的小伙伴参考。 项目背景与设计思路 电商系统的稳定…...
Pixel Couplet Gen快速上手:5分钟部署Pixel Couplet Gen并生成首幅马年春联
Pixel Couplet Gen快速上手:5分钟部署Pixel Couplet Gen并生成首幅马年像素春联 1. 项目介绍 Pixel Couplet Gen是一款基于ModelScope大模型驱动的创意春联生成工具。它将传统春节文化与现代像素艺术完美融合,为用户带来全新的数字节日体验。 与传统春…...
VSCode CLine插件深度配置:灵活切换OpenAI GPT与Claude 3.5模型进行智能编程
1. 为什么开发者需要多模型切换能力 在当今的AI辅助编程领域,OpenAI的GPT系列和Anthropic的Claude系列无疑是两大主流选择。我在实际项目中发现,不同模型在代码生成、错误修复和文档解释等方面各有千秋。比如GPT-4o擅长处理复杂算法逻辑,而Cl…...
IwrQk:5个关键功能打造完美的Iwara跨平台视频社区体验
IwrQk:5个关键功能打造完美的Iwara跨平台视频社区体验 【免费下载链接】iwrqk Unofficial Iwara Flutter Client 项目地址: https://gitcode.com/gh_mirrors/iw/iwrqk IwrQk是一款基于Flutter框架开发的跨平台Iwara客户端应用,专为iOS和Android设…...

