2021 3 19每週學習總結

2021-10-22 16:35:05 字數 3896 閱讀 7615

這一星期,學習了貪心演算法,經過了一星期的貪心演算法的學習,了解了一些問題的解題思路,這裡把題目如何下手和需要注意的問題寫一下;

(1)…有一批貨櫃要裝上一艘載重量為c的輪船,其中貨櫃i的重量為wi。最優裝載問題要求確定在裝載體積不受限制的情況下,將盡可能的貨櫃裝上輪船

則先用sort對重量從小到大排序

1bool cmp (f aa,f bb)

在每次取出最重量的貨櫃搬上船

for

(i=1

; i<=n && b[i]

.w<=c; i++

)

對於這個問題要是數量最多,則優先裝重量最少的保證更可能多的裝下更多的個數;..

與之對應的是可分割的揹包問題

比如貪心的貓鼠交易問題

(2)老鼠有m磅的貓食,想用這m磅貓食換取乳酪。在貓咪看守的每乙個房間裡有乳酪j[i]磅,同時貓咪需要f[i]磅的食物,如果老鼠給貓咪f[i](a)%的貓食,那麼它就可以得到j[i](a)%的豆子。現在已知每只貓咪對貓食的需求量和每個房間的豆子數,那老鼠怎樣才能換得最多的乳酪呢?

解題思路…和上個問題不同的時,這個問題需要是獲得的重量最多,則思路是讓當前情況下自己手上的單位****貓糧可以換到最多的豆子,也就是每次都跳出價效比最高的選擇..

定義結構體的時候,除了該房間所需要的貓糧和換取的豆子外還定義了乙個double型別的價效比x(用double型別是,比較要考慮小數點後面的情況)

struct f

;

然後對價效比排序

bool cmp (f aa,f bb)

在輸入double的時候記得1.0,把整形轉換為浮點型

在輸入資料*後

1for

(int i=

0;i)sort

(a,a+n,cmp)

;

對每個房間進行遍歷

for

(int i=

0;i)else

//不能把房間的豆子賣完,則按比例購買

}

最後輸出即可。..

.(3)

「今年暑假不ac?」

作為球迷,一定想看盡量多的完整的比賽,當然,作為新時代的好青年,你一定還會看一些其它的節目,比如新聞聯播(永遠不要忘記關心國家大事)、非常6+7、超級女生,以及王小丫的《開心辭典》等等,假設你已經知道了所有你喜歡看的電視節目的轉播時間表,你會合理安排嗎?(目標是能看盡量多的完整節目)

問題描述:每個節目都有開始和結束的時間,必須從開始到結束完整的看完,怎樣盡可能使看的節目數最多

.解題思路:越早結束的節目,可以給我留下更多的時間去看其他的節目,對於當前時間段看的節目最多,所以優先看結束時間最早的..

再定義了結構體把每個節目開始結束時間輸出進去,並用sort排序後。

sort排序的方法

bool

cmp(f a,f c)

尋找可以看的最多的節目個數

int fg=a[0]

.e;//把第乙個節目結束的時間儲存下來,第乙個最早節目一定會看的

for(

int i=

1;i)}

最後輸出就可以了..

(4)有n個空間,乙個集合中的元素對於每個區間來說都至少有該區間的m個元素

老師才可上講了重合個數為一的問題

在題目中遇到了數目為2的問題,思想和思路是一樣的

.問題描述:整數區間[a,b],a < b,是以a開頭,以b結尾的所有連續整數的集合。

寫乙個程式:從每個區間中找出包含至少兩個不同整數的集合中的最小元素數。

.解題思路:我是想到了老師上課講的至少乙個的問題,在此的基礎上,考慮需要做出什麼改變,和加入限制條件,『』至少兩個『』的時候,需要多考慮使用兩個標記點,並在判斷中加入當前標記點全部在該區間內,這種情況跳過只有乙個在區間內** 更新乙個標記點*,更新的是*較小的標記點更新為區間的最大值都不在區間更新兩個標記點,更新唄區間的最大和最小

在輸入每個開始結束的時間後,對每個區間末尾的數公升序排序

sort實現方法為

bool

cmp(p a,p b)

尋找最少的個數

for

(int i=

0;i)else

}

問題描述:每個商品都有自己的利潤和截止時間,只有在截止時間賣出才可以獲得利潤,單位時間只能賣出一件商品,讓利潤最大;

解題思路;要使得利潤最大,則就是每個單位時間的利潤最大,則利潤最大的商品一定要賣出,但不一定第一時間賣出,只要在最晚前的也就是截止的當天賣出就可以..

需要乙個判斷該天是否有商品賣出的變數

struct ff

;

排序的方法對利潤公升序排序

bool

cmp(ff a,ff b)

尋找最大利潤

for

(int i=

1;i<=n;i++)}

}

輸出最大利潤;..

..心得感悟

經過最大,感覺和其他科目的學習最大的不同上是,需要死記硬背的東西基本上為零,最重要的是解題的思路和一道問題從**開始入手,是不是可以簡化為我會解決的型別。

在使用int型別的時候要注意的是,除法的比較可以轉換為乘法的運算,因為整數除以整數只可以得到整數,若用double型別可以避免這個問題,或型別的轉換

在考慮問題時候,若資料過大要考慮優化演算法,單純的暴力解可能會出現超時的問題,如vj第一題,使得計算的次數最少

處理整形超過半數的情況時候可以,讓該變數加一再除以二,這樣就可以得到半數以上的資料

乙個泥潭需要用l長度木板排滿的時候,因為int型別可能出現問題,除了用向上取整函式,還可以用

改數字加長度減一在除以長度

2021 3 19學習筆記

4 變數表示式 test是shell程式中的乙個表示式,通常用在流程控制for,while,until,if等結構中,用test命令去判斷檔案的存在與性質,變數的相互關係 語法 test 表示式 如果 表示式 成立,test返回0,反之返回乙個非0值 字串比較 兩個數值的比較 邏輯操作,可以進行an...

每週學習總結

2021.3.20 貪心演算法專題。錯誤思路1,用multiset陣列,把第n天截止的商品按照價值排序,之後從第一天開始首先取每天的最大值,如果有一天沒有該截止日期的商品就從開始順序找。很明顯這種做法,忽略了後面天數的商品價值大的情況。錯誤思路2,也是用multiset陣列,把商品價值排序,但區別與...

每週學習總結一

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