習題 擺渡車(記憶化搜尋)

2021-09-25 15:23:33 字數 950 閱讀 9914

題目:

有n名同學要乘坐擺渡車從人大附中前往人民大學,第i位同學在第ti分鐘去等車。只有一輛擺渡車在工作,但擺渡車容量可以視為無限大。擺渡車從人大附**發、把車上的同學送到人民大學、再回到人大附中(去接其他同學),這樣往返一趟總共花費m分鐘(同學上下車時間忽略不計)。擺渡車要將所有同學都送到人民大學。 凱凱很好奇,如果他能任意安排擺渡車出發的時間,那麼這些同學的等車時間之和最小為多少呢? 注意:擺渡車回到人大附中後可以即刻出發。

輸入格式

第一行包含兩個正整數n,m,以乙個空格分開,分別代表等車人數和擺渡車往返一趟的時間。 第二行包含n個正整數,相鄰兩數之間以乙個空格分隔,第i個非負整數ti代表第i個同學到達車站的時刻。

輸出格式

輸出一行,乙個整數,表示所有同學等車時間之和的最小值(單位:分鐘)。

樣例【樣例輸入1】

5 13 4 4 5 6

【樣例輸出1】

思路:網上的題解大多數都是dp,那麼我就補一下記憶化搜尋,但是大致與dp相同,

在dfs中列舉每乙個人等車或者等人,最終統計答案就行了(dp不夠,搜尋來湊) **

#include#include#includeusing namespace std;

void read(int &x)

while('0'<=c&&c<='9')

x*=f;

}void write(int x)

if(x<10)

putchar(x+'0');

else

}int n,m;

int t[505];

int mem[505][2005];

int dfs(int i,int start_time)

mem[i][start_time-t[i]]=solve;

return solve;

}int main()

記憶化搜尋練習題

michael喜歡滑雪。這並不奇怪,因為滑雪的確很刺激。可是為了獲得速度,滑的區域必須向下傾斜,而且當你滑到坡底,你不得不再次走上坡或者等待公升降機來載你。michael想知道在乙個區域中最長的滑坡。區域由乙個二維陣列給出。陣列的每個數字代表點的高度。下面是乙個例子 1 2 3 4 5 16 17 ...

記憶化搜尋

演算法上依然是搜尋的流程,但是搜尋到的一些解用 動態規劃 的那種思想和模式作一些儲存。一般說來,動態規劃總要遍歷所有的狀態,而搜尋可以排除一些無效狀態。更重要的是搜尋還可以剪枝,可能剪去大量不必要的狀態,因此在空間開銷上往往比動態規劃要低很多。記憶化演算法在求解的時候還是按著自頂向下的順序,但是每求...

記憶化搜尋

記憶化搜尋 演算法上依然是搜尋的流程,但是搜尋到的一些解用動態規劃的那種思想和模式作一些儲存。記憶化演算法在求解的時候還是按著自頂向下的順序,但是每求解乙個狀態,就將它的解儲存下來,以後再次遇到這個狀態的時候,就不必重新求解了。例1.題目描述 給從左至右排好隊的小朋友們分糖果,要求 1.每個小朋友都...