關于貪心學習的文筆記錄

貪心,顧名思義就是越貪越好,越多越有易,他給我的感覺是,通常是求最大或最小問題,相比于動態規劃貪心讓人更加琢磨不透,不易看出方法,為此在這記錄我所見過的題型和思維方法,以便回頭看看…

核心思想:動態規劃是借用之前所有的最佳狀態,來推理出當前的最佳狀態,與眾不同,貪心則是不需要之前的狀態,根據一個價值標準’拿的越多越好’,然而這種價值標準必定沒有影響后效性,比如來到某個狀態點時,消耗了較高代價拿到了最大效益,雖然對于當前狀態來說,但是對于未來的某個·點來說,也許有更加好的選擇消耗更少的代價來獲取較高的效益,所以通常貪心的目的是,找到一種標準價值,按照標準價值來越多越好,或者是通過一定單調性排序,確保每一步都是最優解,然而這一步通常是最難的。

632. 最小區間

你有 k 個 非遞減排列 的整數列表。找到一個 最小 區間,使得 k 個列表中的每個列表至少有一個數包含在其中。
我們定義如果 b-a < d-c 或者在 b-a == d-c 時 a < c,則區間 [a,b] 比 [c,d] 小。

示例 1:
輸入:nums = [[4,10,15,24,26], [0,9,12,20], [5,18,22,30]]
輸出:[20,24]
解釋:
列表 1:[4, 10, 15, 24, 26],24 在區間 [20,24] 中。
列表 2:[0, 9, 12, 20],20 在區間 [20,24] 中。
列表 3:[5, 18, 22, 30],22 在區間 [20,24] 中。

這是一道困難題,確實不好想,他的解題思路是,一直觀察每個數組的最小值,對于這幾個值來說,當前幾個數的值顯然是最小的那個數的最佳狀態,不好解釋為什么,憑想吧。于是可以將這個數的價值記錄并彈出,依次循環,再找出最佳結果。

135.分發糖果

n 個孩子站成一排。給你一個整數數組 ratings 表示每個孩子的評分。
你需要按照以下要求,給這些孩子分發糖果:
每個孩子至少分配到 1 個糖果。
相鄰兩個孩子評分更高的孩子會獲得更多的糖果。
請你給每個孩子分發糖果,計算并返回需要準備的最少糖果數目 。

記得第一次作這題時,確實被這種思維感到震驚,后來發現這種思維其他題也會用到,因此是一個不錯的例題。

盡量少的分發糖果,我們先將每個人分發一個糖果,正向遍歷,如果后一個人的分數大于前一個人,那么后者在前者的基礎上加1(確保右邊人分數大時,右邊人的糖果合理大于左邊),再次逆向遍歷,左邊大于右邊人分數時,左邊人糖果為右邊人糖果加1(確保左邊人糖果的合理性);

這種兩次遍歷的思維,將在下一題同樣遇到。
581. 最短無序連續子數組

給你一個整數數組 nums ,你需要找出一個 連續子數組 ,如果對這個子數組進行升序排序,那么整個數組都會變為升序排序。
請你找出符合題意的 最短 子數組,并輸出它的長度。

這題同樣是利用左右兩次遍歷,有上一題的思維。

要想找到不合理的區間,我們只需要找到最右邊的不合理數,以及最左邊不合理的數,那么什么叫做不和理呢?顯然是左邊的數大于右邊或者右邊的數大于左邊的數,如果一個數的左邊沒有比他大的數,右邊同樣沒有比他小的數,那么說明該數是一個合理的數,我們可以先正向遍歷,篩選出左邊比自己大的不合理的數,然后再逆向遍歷篩選出右邊小于自己的數,挑出最左邊和最右邊下標就可以了。

這題與上一題唯一不一樣的是,上一題是構造合理環境,這一題是檢查不合理環境。

根據規律判斷貪心

分成K份的最大乘積

問題:一個數字n一定分成k份,得到的乘積盡量大是多少,數字n和k可能很大,結果需對100000007取模。

這題第一眼想到的是暴力遞歸,但是即使是記憶化搜索,對于較大數字,也難免會超時,我們先嘗試前幾個數字最大解,觀察一下結果
n=4 2 * 2
n=5 3 * 2
n=6 3 * 3
n=7 2 * 2
n=8 3 * 3 * 2
n=9 3 * 3 * 3
n=10 3 * 3 * 2 * 2
n=11 3 * 3 *3 * 2
n=12 3 * 3 * 3 * 3
n=13 3 * 3 * 3 * 2 * 2

可以發現,當一個數大于4時,可以拆出3時盡量拆3,這樣使得乘積最大,當然可以用數學極限來證明,但是還是當作例題記錄一下的好。在遇到類似的題也可以考慮一下找規律,雖然這樣的題很少,但是對于沒有思路的數學問題,還是可以使用這樣方法快速找到規律來解題的

排序使問題呈現一定單調性

執行所有任務的最少初始電量
每個任務有兩個參數,需要耗費的電量、至少多少電量才開始這個任務
返回手機需要的初始電量,才能執行完所有的任務

仔細想想,我們不難發現,當需要消耗的電量相同時,那么我們應該先讓至少電量最多的任務先完成,當至少電量相同時,應該讓消耗電量少的先完成。
但是問題來了,如果需要消耗少的與至少電量少組合在一起,或是消耗多和至少多的組合在一起,那么我們應該怎么判定優先級呢。既然這樣的話,我們將至少電量需要電量作為值,來排序優先級,直觀上感覺是對的,事實上也確實如此,但是關于證明我還沒有想好,有點玄學。
對于有的題,此法是行不通的,我見過類似的題目,但是將兩因素作差值為優先級并不適用于所有題

知識競賽
最近部門要選兩個員工去參加一個需要合作的知識競賽,每個員工均有一個推理能力值 ai,以及一個閱讀能力bi,如果選擇第i個人和第j個人去參加競賽,兩人在推理能力方面的能力為其兩者推理能力的平均值,閱讀能力同理,現在需要最大化他們表現較差一方面的能力,問這個能力值是多少。

這題依舊是排序解決,只不過是按照兩元素差值的絕對值來排序,依次遍歷每一個人,尋找前面的人與這第i號人的組合最大值,排序后巧妙之處在于,每當來到第i號人,都可以快速求出,第i號人與前面的人組合的最有解,那是因為,對于第i號人來說,他與前面任意一個人組合必定是自己能力最小的作為結果,由于絕對值排序的緣故,前面任何一個人都不可能彌補第i號人在弱勢能力上的差距,所以我們只需要記錄前面所經過的兩能力各最大值即可,每次來到第i號人都可以快速求出組合最優解。
從這題我們應該學到的是,當不得不暴力求解時,嘗試尋找一種策略,使得快速找到一種結果對于第i元素來說一定確保其為最優

可以掌控全局變量的最優決策

在01背包里,其關鍵思想就是或者不要,來到某個狀態時,可以根據前面的所有最佳狀態獲取當前的最佳狀態,當然,這種思維并不只是在動態規劃里可以使用。
871. 最低加油次數

汽車從起點出發駛向目的地,該目的地位于出發位置東面 target 英里處。
沿途有加油站,用數組 stations 表示。其中 stations[i] = [positioni, fueli] 表示第 i 個加油站位于出發位置東面 positioni 英里處,并且有 fueli 升汽油。
假設汽車油箱的容量是無限的,其中最初有 startFuel 升燃料。它每行駛 1 英里就會用掉 1 升汽油。當汽車到達加油站時,它可能停下來加油,將所有汽油從加油站轉移到汽車中
為了到達目的地,汽車所必要的最低加油次數是多少?如果無法到達目的地,則返回 -1 。
注意:如果汽車到達加油站時剩余燃料為 0,它仍然可以在那里加油。如果汽車到達目的地時剩余燃料為 0,仍然認為它已經到達目的地。

這題,可以使用動態規劃思想解決,那么我們要維護的信息是什么呢,當油不夠時,我們更期望之前在存儲油最多的加油站加油,于是需要維護路過的加油站,對于來到第i個地點來說其最佳狀態為以下兩種情況 第一:油不夠時dp[i]=之前最大加油站的油+當前剩余的油-當前消耗的油,第二:油夠時,dp[i]=dp[i]-當前消耗的油;唯一貪心的點在于選取之前路過的最高存儲油量的加油站。

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

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

相關文章

c語言練習題【數據類型、遞歸、雙向鏈表快速排序】

練習1&#xff1a;數據類型 請寫出以下幾個數據的數據類型 整數 a a 的地址 存放a的數組 b 存放a的地址的數組 b的地址 c的地址 指向 printf 函數的指針 d 存放 d的數組 整數 a 的類型 數據類型是 int a 的地址 數據類型是 int*&#xff08;指向 int 類型的指針&#xff09; …

聯想拯救者Y9000P IRX8 2023 (82WK) 原廠Win11 家庭中文版系統 帶一鍵還原功能 安裝教程

安裝完重建winre一鍵還原功能&#xff0c;和電腦出廠時的系統狀態一模一樣。自動機型專用軟件&#xff0c;全部驅動&#xff0c;主題壁紙&#xff0c;自動激活&#xff0c;oem信息等。將電腦系統完全恢復到出廠時狀態。 支持機型 (MTM) : 82WK 系統版本&#xff1a;Windows 1…

搜索與圖論復習2最短路

單源最短路---所有邊權是正數(Dijkstra算法O(n^2)--稠密圖(鄰接矩陣)和堆優化的Dijkstra算法O(mlogn)--稀疏圖(鄰接表)) 或存在負邊權(Bellman-ford貝爾曼福特算法O(nm)和SPFA一般O(m) 最壞O(nm) ) 多源最短路---Floyd算法O(n^3) 一、迪杰斯特拉算法(Dijkstra)&#xff1a;1…

Unity GetLocalizedString()失效問題

問題&#xff1a; 在一個自定義類中調用GetLocalizedString()的方法&#xff0c;是無效的&#xff08;創建這個自定義類的腳本沒掛載到場景中&#xff09;。 解決方法: 將自定義類的GetLocalizedString()方法換個地方&#xff0c;換到在場景中掛載的一個腳本實例&#xff08;…

【建站】專欄目錄

建站專欄的想法有很多&#xff0c;想寫窮鬼如何快速低成本部署前后端項目讓用戶能訪問到&#xff0c;如何將網站收錄到百度&#xff0c;bing&#xff0c;google并優化seo讓搜索引擎搜索到網站&#xff0c;想寫如何把網站加入google廣告或者接入stripe信用卡首款平臺收款&#x…

深入解析“legit”的地道用法——從俚語到正式表達:Sam Altman用來形容DeepSeek: legit invigorating(真的令人振奮)

深入解析“legit”的地道用法——從俚語到正式表達 一、引言 在社交媒體、科技圈甚至日常對話中&#xff0c;我們經常會看到或聽到“legit”這個詞。比如最近 Sam Altman 在 X&#xff08;原 Twitter&#xff09;上發的一條帖子中寫道&#xff1a; we will obviously deliver …

Vue 圖片引用方式詳解:靜態資源與動態路徑訪問

目錄 前言1. 引用 public/ 目錄2. assets/ 目錄3. 遠程服務器4. Vue Router 動態訪問5. 總結6. 擴展&#xff08;圖片不顯示&#xff09; 前言 &#x1f91f; 找工作&#xff0c;來萬碼優才&#xff1a;&#x1f449; #小程序://萬碼優才/r6rqmzDaXpYkJZF 在 Vue 開發中&#x…

DeepSeek-R1 本地部署教程(超簡版)

文章目錄 一、DeepSeek相關網站二、DeepSeek-R1硬件要求三、本地部署DeepSeek-R11. 安裝Ollama1.1 Windows1.2 Linux1.3 macOS 2. 下載和運行DeepSeek模型3. 列出本地已下載的模型 四、Ollama命令大全五、常見問題解決附&#xff1a;DeepSeek模型資源 一、DeepSeek相關網站 官…

JVM運行時數據區域-附面試題

Java虛擬機在執行Java程序的過程中會把它所管理的內存劃分為若干個不同的數據區域。這些區域 有各自的用途&#xff0c;以及創建和銷毀的時間&#xff0c;有的區域隨著虛擬機進程的啟動而一直存在&#xff0c;有些區域則是 依賴用戶線程的啟動和結束而建立和銷毀。 1. 程序計…

什么是LPU?會打破全球算力市場格局嗎?

在生成式AI向垂直領域縱深發展的關鍵節點&#xff0c;一場靜默的芯片革命正在改寫算力規則。Groq研發的LPU&#xff08;Language Processing Unit&#xff09;憑借其顛覆性架構&#xff0c;不僅突破了傳統GPU的性能天花板&#xff0c;更通過與DeepSeek等國產大模型的深度協同&a…

如何構建ObjC語言編譯環境?構建無比簡潔的clang編譯ObjC環境?Windows搭建Swift語言編譯環境?

如何構建ObjC語言編譯環境? 除了在線ObjC編譯器&#xff0c;本地環境Windows/Mac/Linux均可以搭建ObjC編譯環境。 Mac自然不用多說&#xff0c;ObjC是親兒子。(WSL Ubuntu 22.04) Ubuntu可以安裝gobjc/gnustep和gnustep-devel構建編譯環境。 sudo apt-get install gobjc gnus…

2月3日星期一今日早報簡報微語報早讀

2月3日星期一&#xff0c;農歷正月初六&#xff0c;早報#微語早讀。 1、多個景區發布公告&#xff1a;售票數量已達上限&#xff0c;請游客合理安排行程&#xff1b; 2、2025春節檔總票房破70億&#xff0c;《哪吒之魔童鬧海》破31億&#xff1b; 3、美宣布對中國商品加征10…

DeepSeek 原理解析:與主流大模型的差異及低算力優勢

在人工智能大模型蓬勃發展的浪潮中&#xff0c;DeepSeek 以其獨特的技術路線和出色的性能表現脫穎而出。與主流大模型相比&#xff0c;DeepSeek 不僅在技術原理上有著顯著的差異&#xff0c;還展現出了在較低算力下達到 OpenAI API 水平的卓越能力。本文將深入剖析這些獨特之處…

C++ Primer 標準庫vector

歡迎閱讀我的 【CPrimer】專欄 專欄簡介&#xff1a;本專欄主要面向C初學者&#xff0c;解釋C的一些基本概念和基礎語言特性&#xff0c;涉及C標準庫的用法&#xff0c;面向對象特性&#xff0c;泛型特性高級用法。通過使用標準庫中定義的抽象設施&#xff0c;使你更加適應高級…

【Numpy核心編程攻略:Python數據處理、分析詳解與科學計算】2.6 廣播機制核心算法:維度擴展的數學建模

2.6 廣播機制核心算法&#xff1a;維度擴展的數學建模 目錄/提綱 #mermaid-svg-IfELXmhcsdH1tW69 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-IfELXmhcsdH1tW69 .error-icon{fill:#552222;}#mermaid-svg-IfELXm…

【Elasticsearch】硬件資源優化

&#x1f9d1; 博主簡介&#xff1a;CSDN博客專家&#xff0c;歷代文學網&#xff08;PC端可以訪問&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移動端可微信小程序搜索“歷代文學”&#xff09;總架構師&#xff0c;15年工作經驗&#xff0c;精通Java編…

bootstrap.yml文件未自動加載問題解決方案

在添加bootstrap.yml文件后,程序未自動掃描到,即圖標是這樣的: 查了一些資料,是缺少bootstrap相關依賴,雖然已經添加了spring-cloud-context依賴,但是這個依賴并未引入bootstrap依賴,可能是版本問題,需要手動引入 <dependency><groupId>org.springframework.cloud&…

C++底層學習預備:模板初階

文章目錄 1.編程范式2.函數模板2.1 函數模板概念2.2 函數模板原理2.3 函數模板實例化2.3.1 隱式實例化2.3.2 顯式實例化 2.4 模板參數的匹配原則 3.類模板希望讀者們多多三連支持小編會繼續更新你們的鼓勵就是我前進的動力&#xff01; 進入STL庫學習之前我們要先了解有關模板的…

【玩轉 Postman 接口測試與開發2_015】第12章:模擬服務器(Mock servers)在 Postman 中的創建與用法(含完整實測效果圖)

《API Testing and Development with Postman》最新第二版封面 文章目錄 第十二章 模擬服務器&#xff08;Mock servers&#xff09;在 Postman 中的創建與用法1 模擬服務器的概念2 模擬服務器的創建2.1 開啟側邊欄2.2 模擬服務器的兩種創建方式2.3 私有模擬器的 API 秘鑰的用法…

【算法】回溯算法專題③ ——排列型回溯 python

目錄 前置小試牛刀回歸經典舉一反三總結 前置 【算法】回溯算法專題① ——子集型回溯 python 【算法】回溯算法專題② ——組合型回溯 剪枝 python 小試牛刀 全排列 https://leetcode.cn/problems/permutations/description/ 給定一個不含重復數字的數組 nums &#xff0c;返…