【算法實戰】每日一題:設計一個算法,用最少數量的矩形覆蓋一系列寬度為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

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

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

相關文章

redis數據類型set,zset

華子目錄 Set結構圖相關命令sdiff key1 [key2]sdiffstore destination key1 [key2...]sinter key1 [key2...]sinterstore destination key1 [key2...]sunion key1 [key2...]sunionstore destination key1 [key2...]smove source destination memberspop key [count]sscan key c…

Java GC問題排查的一些個人總結和問題復盤

個人博客 Java GC問題排查的一些個人總結和問題復盤 | iwts’s blog 是否存在GC問題判斷指標 有的比較明顯&#xff0c;比如發布上線后內存直接就起飛了&#xff0c;這種也是比較好排查的&#xff0c;也是最多的。如果單純從優化角度&#xff0c;看當前應用是否需要優化&…

探索旅行的優惠之選,千益暢行旅游卡讓旅程更省心省力!

在旅行的道路上&#xff0c;一張旅游卡往往能為您帶來意想不到的便利與優惠。那么&#xff0c;對于千益暢行旅游卡&#xff0c;您是否好奇如何輕松擁有它呢&#xff1f; 首先&#xff0c;千益暢行旅游卡作為旅行者的貼心伴侶&#xff0c;為您提供了多樣化的獲取渠道。您可以通…

Unity實現首行縮進兩個字符

效果 在Unity中如果想實現首行縮進兩個字符&#xff0c;你會發現按空格是沒法實現的。 實現原理&#xff1a;用空白的透明的字替代原來的位置。 代碼&#xff1a; <color#FFFFFF00>XXX</color> 趕緊去試試吧&#xff01;

備戰秋招—模擬版圖面試題來了

隨著暑期的腳步逐漸臨近&#xff0c;電子工程和集成電路設計領域的畢業生們&#xff0c;也將迎來了另一個求職的黃金期——秋招。我們總說機會是留給有準備的人。對于有志于投身于模擬版圖設計的學子們來說&#xff0c;為了在眾多求職者中脫穎而出&#xff0c;充分備戰模擬版圖…

C# 工商銀行缺少infosecapiLib.infosec

搜索Tlbimp.exe 這里使用4.8.1下的處理&#xff0c;以管理員身份打開powershell cd "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8.1 Tools".\TlbImp.exe "G:\CSharp\icbc-api-sdk-cop-c#\sdk-cop\sdk-cop\dll\infosecapi.dll" …

PCIe協議之-DLLP詳解

?前言&#xff1a; &#x1f31f;數據鏈路層的功能 數據鏈路層將從物理層中獲得報文&#xff0c; 并將其傳遞給事務層&#xff1b; 同時接收事務層的報文&#xff0c; 并將其轉發到物理層; 核心的功能有以下三點 1.保證TLP在 PCIe 鏈路中的正確傳遞; 2.數據鏈路層使用了容錯…

頁面導出PDF,非可視區域如何解決

const exportToPDF () > {const element document.getElementById(chart-container);if (!element) return;const originalScrollHeight element.scrollHeight;// 臨時解除滾動條限制&#xff0c;確保所有內容都可見element.style.height ${originalScrollHeight}px;// …

殺死那個進程

一、場景 eclipse在啟動tomcat時&#xff0c;出現端口被占用的情況。我尋思著“任務管理器”沒出現相應程序在跑啊。 1.1問題&#xff1a;端口和進程的關系 端口和進程之間存在著一種關系&#xff0c;端口是一個邏輯概念&#xff0c;它用于標識網絡通信中的一個終點&#xff0…

SEC突發:以太坊ETF大概率獲批

美國證監會大概率批準以太坊現貨ETF。 5月20日&#xff0c;據外媒CoinDesk報道&#xff0c;知情人士透露&#xff0c;美國SEC周一要求證券交易所更新以太坊現貨ETF的19b-4備案文件。19b-4備案文件是一種表格&#xff0c;用于向SEC通報允許基金在交易所交易的規則變更。 三位消息…

利用cherry pick巧妙地將某次提交單獨合并到其他分支

0. 引言 最近在進行系統的多版本并行開發&#xff0c;涉及一些共有基礎功能提交時就遇到了麻煩&#xff0c;一份代碼需要向多個版本分支進行同步&#xff0c;以保證多版本都能有更新該基礎功能。 多次對比提交的方式顯然會帶來巨大的工作量。但實際上我們可以通過git的cherry…

「Python Socket超能力:網絡世界的隱形斗篷!」

Hi&#xff0c;我是阿佑&#xff0c;今天將帶領大家揭開Python Socket編程的神秘面紗&#xff0c;賦予我們的網絡應用隱形斗篷般的超能力&#xff01; 深入探討Socket編程的革命性力量&#xff0c;教你如何用Python的Socket模塊來構建強大的網絡應用。從簡單的HTTP服務器到復雜…

MagicLens:新一代圖像搜索技術和產品形態

MagicLens&#xff1a;Self-Supervised Image Retrieval with Open-Ended Instructions MagicLens: 自監督圖像檢索與開放式指令 作者&#xff1a;Kai Zhang&#xff0c; Yi Luan&#xff0c; Hexiang Hu&#xff0c; Kenton Lee&#xff0c; Siyuan Qiao&#xff0c; Wenhu …

Selenium操作瀏覽器Cookie(增/刪/查看cookie)

天行健&#xff0c;君子以自強不息&#xff1b;地勢坤&#xff0c;君子以厚德載物。 每個人都有惰性&#xff0c;但不斷學習是好好生活的根本&#xff0c;共勉&#xff01; 文章均為學習整理筆記&#xff0c;分享記錄為主&#xff0c;如有錯誤請指正&#xff0c;共同學習進步。…

更新.gitmodules的子模塊倉庫地址,但是沒有生效,需要運行命令

當你更新了 .gitmodules 文件中的子模塊倉庫地址后&#xff0c;為了使這些更改生效并同步到實際的子模塊目錄&#xff0c;你需要執行以下步驟&#xff1a; 同步.gitmodules的更改&#xff1a; 使用 git submodule sync 命令來同步.gitmodules文件中的URL修改到你的本地配置。執…

在VS Code中進行Java的單元測試

在VS Code中可以使用 Test Runner for Java擴展進行Java的測試執行和調試。 Test Runner for Java的功能 Test Runner for Java 結合 Language Support for Java by Red Hat 和 Debugger for Java這兩個插件提供如下功能&#xff1a; 運行測試&#xff1a; Test Runner for …

Flutter 中的 Flex 小部件:全面指南

Flutter 中的 Flex 小部件&#xff1a;全面指南 Flutter 的布局系統非常靈活&#xff0c;允許開發者以聲明式的方式構建復雜的用戶界面。Flex 是 Flutter 中用于創建靈活布局的核心小部件之一&#xff0c;它提供了水平和垂直的線性布局能力。本文將詳細介紹 Flex 小部件的使用…

QT學習(20):QStyle和自定義樣式

QStyle 樣式&#xff08;繼承自QStyle類&#xff09;代表控件的繪制并封裝GUI的外觀。QStyle是一個封裝了GUI外觀的抽象基類。Qt使用QStyle去執行幾乎所有的內置控件的繪制&#xff0c;確保控件外觀和原生控件風格風格相同。 class Q_WIDGETS_EXPORT QStyle : public QObject{…

【OpenCV】圖像通道合并與分離,ROI

介紹可以實現圖像通道合并與分離的API&#xff0c;這只是一種方式&#xff0c;后續還會介紹其他的合并與分離方法&#xff0c;以及ROI區域截取的方法。相關API&#xff1a; split() merge() Mat對象() 代碼&#xff1a; #include "iostream" #include "ope…

Hive的小文件處理

針對ORC存儲格式的小文件 --orc合并小文件的特定語法,使用concatenate(連接、使連續)關鍵字 --非分區表 alter table table_name concatenate;--分區表 alter table table_name partition(dtxxx) concatenate;針對TEXTFILE存儲格式的小文件 --將這些小文件進行合并,這里使用d…