1. 程式人生 > >跳房子——meet in the middle

跳房子——meet in the middle

ddl 代碼 meet 題目 ... 直接 同時 它的 有一個

題目大意如下:

有n棟房子,每個房子都有一個高度,我們只能跳到右邊任意一個高度不小於當前房子的房子上,同時我們可以獲得上面的金幣

現在告訴你有n棟房子的高度和對應的金幣數量,給出要求m,求出在這些房子上跳躍的方案中金錢數超過m的方案數(n<=40,hi,ci<=10^9)

這種惡心的數據,一看到我就直接交上暴力(數據真心水,某些暴力跑的比標算還快)

emmm,這考的是一個經典思想——meet in the middle(某位dalao考場自己居然發明了)

我們把n分成兩部分,1~n/2.n/2~n,暴力處理兩部分

我們會得到2*2^20個結果,記錄左邊的終點和金幣數,記錄右邊的起點和金幣數

對於左邊的每一個結果在右邊的每一個可以到達的點上二分出它的位置,記錄答案

好像就這麽點了吧....

(請耐心等待作者上傳代碼)

跳房子——meet in the middle