DP一周做題報告1

2021-08-16 17:01:21 字數 1229 閱讀 1953

好久沒有更新部落格啦,今天終於有時間來機房**啦!

上週我刷了不少dp題目,深有感觸,所以今天特地來寫一些總結。

直接題目!

例題一——飛彈攔截

這道題目很經典,題目有兩個問題,第二問是貪心問題,所以我們在這裡只討論第一問。

因為後面的飛彈的高度一定小於等於前面的飛彈的高度,所以最終攔截的飛彈的高度是構成了乙個不下上公升序列,因為長度要最長,所以求的是乙個最長不上公升子串行。

我們可以設乙個一維的dp陣列,dp[i]表示前i個個飛彈構成的最長不下降子串行。

對於第i個飛彈(我們假設他一定被攔截),我們列舉第i個前面的飛彈j(j小於i)

如果f[j]大於0,說明在前j個數裡面存在最長不上公升子串行,(注意跟前面一樣,這裡也是假設第j個在最長不上公升子串行裡面的),那麼f[j]肯定是這條最長不上公升子串行最小的數吧。假如第i個數的要小於第j個數,那我們可以將第i個數加在前j個數組成的最長不上公升子串行的末尾,那麼這條子序列是不是長度就加一了呢(這種情況叫做繼承最優值)。

dp方程:

外層迴圈列舉第i個飛彈,內層迴圈列舉1到i-1個飛彈。

大家應該改能理解(這道題還是比較水的,我居然扯淡扯了怎麼多。。。。)

與這道題目相類似的題目還有合唱隊型,只不過那道題要做兩次最長不下降子串行。

來一道差不多稍微進化點的題目!

例題二——輪船問題:

上一道題目是不能排序的,因為飛彈的順序無法更改。

但是這道目是可以排序的,因為他沒有先後順序的約束,只是讓你求出最優方案的值。

排好序之後從左往右依次是一些線段,我們可以把一條線段想象成乙個點,這些線段就是一條序列。和上一道題目一樣,用f[i]表示前i條航線構成的最優值。對於第i條航線來說,我們找到所有在他前面的航線j,如果航線j和航線i不交叉,那麼f[i]就可以繼承f[j]的最優值了。因為我們假設的是第j條航線一定是f[j]中包含的一條航線並且是最後面的一條。

如果你明白了上面了那題,那這題肯定也能理解。dp方程不給了(其實就上改了一下上面那個的判斷條件)

ojbk

一周技術報告

這個報告寫得遲了點,但是還得記錄一下,因為這週有兩次判斷失誤,記下以防再犯 修了兩台pc機,故障都是類似的執行中藍屏,乙個是正常進系統藍屏,安全模式正常,其二是一上網本無故出現宕機 診斷過程 1.台機 按常規診斷,懷疑是硬碟故障,因為之前裝過系統,相隔才幾天,所以誤判為硬體故障,之後換硬碟線,似乎好...

一周總結(1)

10.20 莫名其妙的一周過去了呢。回想一下上週給自己定的目標這周做到了嗎?好像沒有呢。說好的要a題,說好的要做四級題。時間就是這樣在你不知不覺中偷偷溜走了。忽然覺得上大學的時間過得也不慢,一周除了白天上課,晚上也要上社團的課,仔細算算一周下來也只有周一晚上是沒上課,但要上晚自習呢。而且上了大學看書...

一周總結(1)

學習 開學兩個多月了,對於大學生活也逐漸由期待變為適應,本來以為擺脫了高中生活可以不用再晚睡早起,一切都和想象中的大學生活比一樣呢,不僅有睏意重重的早讀,還有披星戴月的早操。大學時間過得還真是快呢,沒有一點點防備,期末考試已經臨近,小組的考核題也已經發出來好幾天了,現在還是一頭霧水,別說,還真有點慌...