題目:
有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.每個小朋友都...