每週學習總結

2021-10-22 17:14:05 字數 1969 閱讀 5820

2021.3.20

貪心演算法專題。

錯誤思路1,用multiset陣列,把第n天截止的商品按照價值排序,之後從第一天開始首先取每天的最大值,如果有一天沒有該截止日期的商品就從開始順序找。**很明顯這種做法,忽略了後面天數的商品價值大的情況。

錯誤思路2,也是用multiset陣列,把商品價值排序,但區別與一的是,從後面開始,如果這天有商品截止,就取這天最大的財富,如果這天沒有商品,就取之前沒有使用過的商品。**這種做法忽略了,後面天數的價值大但是每天都有價值的情況。

正確思路1,用結構體按照天數排序,如果天數相等,就按價值排序,從第乙個元素開始,k截止日期從1開始,如果按照天數大於k就加入到陣列中,反之就將元素和陣列中的元素比較,如果大於該價值就替換該價值。

正確思路2,建立結構體,注意這次是按照**排序,並建立陣列bool型別,來某一天是否有商品,從價值最大的開始,並將改天數標記,如果遍歷到日期使用過的,就將這商品的截止日期減一,直到沒有標記過的天數或第0天。

總結,這題貪心價值最大,從第一天開始如果後面有天數的價值大於之前就講之前的替換。既可以保證價值最大,也可以保證可以在截止日期前賣出。如果從後向前就不可以了。

2,題幹,在笛卡爾座標系中,第一象限有若干點,x軸上有若干點,並且每個點可以覆蓋半徑r的範圍,覆蓋範圍可以重疊,求出最小的點數,並覆蓋所有的點。

錯誤思路1,因為每個點的座標都是整數,按照x座標進行排序,如果有個座標y是r那麼圓心必定在該點的x上,

從最左邊元素開始,第乙個元素右邊2*r-2都是可以覆蓋到的(如果沒有y是r的座標的話,如果有就將x+n-1和y是r的元素的x比較,在右邊就+1,左邊就不變)依次遍歷即可。**很明顯這樣忽略了圓心不是整數的情況。

正確思路1,結構體排序不變,從第一象限的點出發以半徑為r畫圓,與x軸會有兩個交點,建立乙個結構體將左右兩點記錄下來,並按照右端大小進行公升序排列,之後揭示重疊問題,(之後說)。

總結,這題採用乙個逆向思維,將x軸上的點到第一象限上的的距離轉為第一象限上的點到x軸上的距離。然後採用一直的知識。(這題有一點需要注意是按照每個點的結束位置進行公升序排列,有人問了,為什麼不是按照其實位置進行公升序排列,原因是,如果最左邊的點恰好是最長的木板,而左邊第二點的右邊端點在第乙個線段的內部,就結果錯誤)

3,題幹,給定若干個起始終點位置,起始第乙個不算,每個距離都是乙個水坑,有長度為k得木板無限個。求出最小個數的木板。

正確思路,先進行排序,從第乙個水坑的位置開始,到最後乙個位置結束,算出中間距離是多大,從第乙個位置開始,看第乙個水坑需要幾個木板,看木板能否到下乙個水坑的開始位置,如果到不了就減去下乙個水坑開始到前乙個水坑最後木板的結束位置。然後依次求出即可,最後用所有的距離減去沒有用木板的距離,再去除木板的長度即可。

總結,這題採用逆向思維,先把所有位置鋪滿沒有用到木板的位置就把木板往右推。

錯誤思路,將孩子的胃口和餅乾的大小按照公升序排序,並且從乙個孩子和第乙個餅乾開始,如果這塊餅乾無法滿足這個孩子就看下一塊餅乾,直到最後一塊餅乾。**

正確思路,將孩子的胃口和餅乾數量進行降序排列,從第乙個孩子和第乙個餅乾開始,顯然是從最大的餅乾開始,如果不滿足這個孩子的胃口,就進行下乙個孩子。

總結,看似這兩種方法是一樣的但是第一種方法不夠貪心,換個方向看,問題是問能夠滿足孩子的最大數量,也就是將餅乾給出去的數量最大,而第一種方法只是盡可能多的滿足前面幾個胃口小的孩子罷了。

2,選課問題,題幹,有n門課程需要選擇,每次選擇一門課不需要時間但是選擇完畢之後有5分鐘的停滯期,在這5分鐘內不允許再次選課。而且每門課程有自己的選課時間段,請問能選擇最大課程的數目是多少。

正確思路1,按照課程結束的時間進行排序的,並且分為5中情況分別是從第1,2,3,4,5分鐘開始選課,而且每次只能選擇在包括這個時間點的課程,而且這個課程必須是較早結束的。為什麼每次只能卡住時間點進行,是因為如果第一次選了5分鐘,而因為在10分鐘的選課沒有課就選擇第11分鐘開始的的話,後面說不定會錯過好幾個在5的倍數出現的課程。

思路,這題和重疊區間有異曲同工之妙,但仔細一看就會發現這題多了5分鐘停滯期的限制條件,所以不妨先將5分鐘的停滯期條件去掉,找出最優,然後再加上5分鐘的時間限制。

2021 3 19每週學習總結

這一星期,學習了貪心演算法,經過了一星期的貪心演算法的學習,了解了一些問題的解題思路,這裡把題目如何下手和需要注意的問題寫一下 1 有一批貨櫃要裝上一艘載重量為c的輪船,其中貨櫃i的重量為wi。最優裝載問題要求確定在裝載體積不受限制的情況下,將盡可能多的貨櫃裝上輪船 則先用sort對重量從小到大排序...

每週學習總結一

一 css3的三角形畫法 一 原理 通過對於邊框的設定,來畫出三角形。當設定盒子的寬高為0時,就是由四個三角形維成的乙個正方形。2 三角形的組成 當三個方向的顏色為透明,就能形成乙個執行某個方向的三角形 只有邊框的頂端會顯現,就會出現乙個向下的三角形,其餘類似。3 不規則三角形的思路 邊框的寬度是指...

每週總結 12 5 12 11

關於時間格式 string型別轉date型別 string datestr2 2012 01 10t00 00 00 replace t dateformat dateformat new dateformat yyyy mm dd hh mm ss date date dateformat.par...