【CSP試題回顧】201312-3-最大的矩形

CSP-201312-3-最大的矩形

解題思路

1. 遍歷所有可能的矩形高度:

  • 通過遍歷所有矩形高度來找到最大的矩形,即對每個可能的高度 it(從直方圖中的最小高度到最大高度 heightMax),代碼將嘗試找到在這個高度或以上的最長連續條形段。這是通過再次遍歷直方圖中的所有條形實現的,這次是為了測量每個可能高度下的最長連續段。

2. 計算給定高度下的最大長度:

  • 對于直方圖中的每個高度 it
    1. 初始化 lengthMax(給定高度下的最大長度)為-1和 length(當前連續段的長度)為0。
    2. 然后遍歷 heightArray,如果條形的高度大于或等于 itjt >= it),length 加一(表示這個高度的連續段增加)。
    3. 如果條形的高度小于 it(表示連續段結束),則比較并更新 lengthMax(如果當前連續段長度 length 大于之前記錄的最大長度),并重置 length 為0以開始新的長度測量。

3. 更新最大矩形面積:

對于每個可能的高度 it,代碼計算可能的最大矩形面積(it * lengthMax),如果這個面積大于之前記錄的最大面積 sMax,則更新 sMax

完整代碼

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;int main() {int n, heightMax = -1;cin >> n;long long sMax = 0; vector<int>heightArray(n); // 記錄所有高度for (int i = 0; i < n; i++){cin >> heightArray[i];heightMax = max(heightMax, heightArray[i]); // 記錄最大高度}heightArray.push_back(0); // 附終止條件for (const auto& it : heightArray) // 遍歷所有高度{int lengthMax = -1, length = 0;// 找到高度i下的最大長度for (const auto& jt : heightArray) {if (jt >= it){length++;}else{lengthMax = max(length, lengthMax);length = 0; // 重置}}long long s = it * lengthMax;sMax = max(sMax, s);}cout << sMax;return 0;
}

請添加圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/719842.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719842.shtml
英文地址,請注明出處:http://en.pswp.cn/news/719842.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

軟件測試相關介紹

什么是軟件測試&#xff1f; 軟件測試&#xff1a;使用技術手段驗證軟件是否滿足使用需求 軟件測試是指通過運行、評估和驗證軟件系統的過程&#xff0c;以確定其是否滿足預期的需求和質量標準。它是軟件開發生命周期中的一個重要環節&#xff0c;旨在發現和修復潛在的缺陷和…

前端錯誤 “TypeError Cannot read properties of undefined (reading ‘xxx‘)

前端錯誤 “TypeError: Cannot read properties of undefined (reading ‘xxx‘) 原因分析及解決 情況一&#xff1a; 出現該錯誤的原因是因為你花括號中的某些屬性未定義。極大可能是因為你寫錯了屬性名稱 情況二&#xff1a; 異步請求獲取數據時&#xff0c;語句可能寫錯&…

Linux操作系統——進程信號

1.信號的概念 生活當中哪些場景算信號呢&#xff1f;比如說你晚上調了個鬧鐘&#xff0c;然后第二天早上你聽到了鬧鐘響了你就知道該起床了&#xff0c;這種機制就叫做信號機制。在生活中我們的信號是非常非常多的&#xff0c;比如說有&#xff1a;紅綠燈&#xff0c;下課鈴聲…

Java中多線程的各種姿勢

在Java中&#xff0c;多線程編程是一種強大的并發編程技術&#xff0c;可以讓你同時執行多個任務。Java提供了多種方式來創建和管理線程。以下是Java中給多線程使用的一些主要方法&#xff1a; 繼承Thread類&#xff1a; 創建一個新的類繼承自Thread類。覆蓋run()方法以定義線程…

爬蟲案例一

首先我舉一個案例比如豆瓣電影排行榜 (douban.com)這個電影&#xff0c;首先我們進去檢查源代碼 說明源代碼有&#xff0c;說明是服務器渲染&#xff0c;可以直接那html 但是返回的結果是空&#xff0c;所以我們需要在頭里面加上User-Agent 然后可以看到有返回的結果&#xff0…

Docker快速集成minio

拉取鏡像&#xff08;默認最新的&#xff09; docker pull minio/minio創建配制和數據映射文件夾&#xff08;用于將容器內的配置和數據映射到本地&#xff09; 這邊的路徑可以修改成自己想要的文件夾 mkdir -p /data/minio/{config,data}啟動容器 (這邊啟動容器要保證本地映…

什么是SpringCloud,有哪些組件?

spring Cloud 是基于spring boot的分布式系統開發工具,它提供了一系列開箱即用的,針對分布式系統開發的特性和組件。用于幫助開發人員快速構建和管理云原生應用程序。 Spring Cloud 的主要目標是解決分布式系統中的常見問題,例如服務發現,負載均衡,配置管理,斷路器,消息總…

c++筆記—— AutoBuffer類(opencv)

自動分配緩沖區類 Automatically Allocated Buffer Class. 這個類用于函數和方法中的臨時緩沖區。如果臨時緩沖區通常很小&#xff08;幾K的內存&#xff09;&#xff0c;但其大小取決于參數&#xff0c;則在堆棧上創建一個小的固定大小數組&#xff0c;并在足夠大時使用它是有…

LabVIEW起重機工作參數遠程監測系統

LabVIEW起重機工作參數遠程監測系統 隨著起重機技術的持續發展&#xff0c;對其工作參數的實時監控需求日益增加。設計了一個基于LabVIEW和TBox的起重機工作參數遠程監測系統&#xff0c;能夠實現起重機工作參數的實時采集、傳輸、解析和顯示&#xff0c;有效提升起重機的性能…

python--開心篇--print--多種多樣的print輸出

文章目錄 名言輸出繞口令輸出《水滸傳》中的梁山好漢輸出軌道交通充值信息輸出對聯字符畫輸出長春地鐵1號線運行圖模擬12306查詢界面模擬企業網站登錄界面 名言 print("& "*15) print("& &") print("& …

發現了一個超級好用的上網神器!但是不知道在哪里有賣······隨身WiFi好評推薦,隨身WiFi好用嗎?

這兩天到一個小地方出差&#xff0c; 走到一個奶茶店附近&#xff0c; 突然老板打電話說一個緊急文件需要我處理&#xff0c; 說實話有點崩潰&#xff0c; 前不著村后不著店的&#xff0c; 我去哪里找網絡辦公 辛虧奶茶店的小姐姐聽到了&#xff0c; 讓我在她店里&#x…

wy的leetcode刷題記錄_Day81

wy的leetcode刷題記錄_Day81 聲明 本文章的所有題目信息都來源于leetcode 如有侵權請聯系我刪掉! 時間&#xff1a;2024-3-4 前言 目錄 wy的leetcode刷題記錄_Day81聲明前言232. 用棧實現隊列題目介紹思路代碼收獲 138. 隨機鏈表的復制題目介紹思路代碼收獲 141. 環形鏈表題…

SUSE 配置防火墻策略

一.獲取目前訪問的接口 suse12sp3 # netstat -tunlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:8005 0.0.0.0:* …

【Bugs】class path resource [xxx.xml] cannot be opened because it does not exist

報錯&#xff1a; 關鍵報錯信息&#xff1a; class path resource [scope.xml] cannot be opened because it does not exist完整報錯信息&#xff1a; 2024-03-01 14:26:58 866 [main] DEBUG org.springframework.context.support.ClassPathXmlApplicationContext - Refres…

Ubuntu的apt、apt-get和apt-cache命令

原文&#xff1a;apt 和 apt-get 之間有什么區別&#xff1f; https://aws.amazon.com/cn/compare/the-difference-between-apt-and-apt-get/ 陳拓轉載&#xff0c;2023/11/23&#xff0c;添加了舉例。 apt 和 apt-get 之間有什么區別&#xff1f; apt 和 apt-get 都是命令行…

【存儲】without SPDK時,fio測試nvme SSD 和HDD對比

先看使用的io調度器是什么,SSD的話最好設置成none。 root@xxx-0010 ~ # cat /sys/block/nvme5n1/queue/scheduler [none] mq-deadline kyber使用fio對nvme SSD和普通HDD做對比測試: 1、 4K random write fio -filename=/data12/fiotest/testfile -direct=1 -iodepth=4 -th…

OpenAI劃時代大模型——文本生成視頻模型Sora作品欣賞(十五)

Sora介紹 Sora是一個能以文本描述生成視頻的人工智能模型&#xff0c;由美國人工智能研究機構OpenAI開發。 Sora這一名稱源于日文“空”&#xff08;そら sora&#xff09;&#xff0c;即天空之意&#xff0c;以示其無限的創造潛力。其背后的技術是在OpenAI的文本到圖像生成模…

如何找到企查查天眼查上沒有的企業聯系方式?

相信很多銷售在查找企業聯系方式的過程中&#xff0c;遇到過很多問題。很多人在出入行的時候都使用過企查查&#xff0c;天眼查來查找客戶。 但是在實際工作中使用這上面的聯系方式&#xff0c;效果卻不是很理想&#xff0c;因為上面的信息不是很準確&#xff0c;號碼不是企業…

【嵌入式移植】8、U-Boot源碼分析5—啟動過程分析start.S

U-Boot源碼分析5—啟動過程分析start.S 1、boot0.h2、reset2.1、vectors2.2、ELn2.2.1 EL32.2.2、EL2、EL1 2.3、SMPEN2.3、core errate2.4、lowlevel_init 前面從U-Boot編譯的角度分析了其Makefile、鏈接腳本等&#xff0c;本章開始正式分析U-Boot啟動過程 從上一篇文章7、U-…

ClickHouse SQL Reference (四)數據類型

Tuple(T1, T2, …) 元素元組&#xff0c;每個元素都有一個單獨的類型。元組必須至少包含一個元素。 元組用于臨時列分組。在查詢中使用IN表達式時&#xff0c;以及指定lambda函數的某些形式參數時&#xff0c;可以對列進行分組。有關更多信息&#xff0c;請參閱IN操作符和高階…