動態規劃(二) Help Jimmy 滑雪

2021-08-20 15:00:39 字數 3007 閱讀 4635

if(板子k左端正下方沒有別的板子)

else if(板子k左端正下方的板子編號是m)

**實現:

/*

poj1661 help himmy

這樣效率太低了,一早上沒看幾個題

**要是不是特別好看懂,先把偽**寫出來就比較好懂了

分析:將板子由高到低按從0到n編號,起始點的為0

不妨認為jimmy開始的位置是乙個編號為0,長度為0的板子

設leftmintime(k)表示從k號板子左端到地面的最短時間

rightmintime(k)表示從k號板子右端到地面的最短時間

if ( 板子k左端正下方沒有別的板子)

else if( 板子k左端正下方的板子編號是m )

leftmintime(k) = h(k)-h(m) +

min( leftmintime(m) + lx(k)-lx(m),

rightmintime(m) + rx(m)-lx(k));}*/

#include #include #include #include using namespace std;

#define max_n 1000

#define infinite 1000000

int t, n, x, y, maxheight;

struct platform

};platform platforms[max_n + 10];//平台

int leftmintime[max_n + 10];//走左邊的最小時間

int rightmintime[max_n + 10];//走右邊的最小時間

int l[max_n + 10];//

//l表示現在這塊板的編號,越在上面的編號越小,bleft表示是否向左邊走

//因為這題分為向左和向右兩種情況

int mintime(int l, bool bleft)//l表示現在這塊板的編號,越在上面的編號越小,bleft表示是否向左邊走

if (i <= n)

else

int nlefttime = y - platforms[i].h + x - platforms[i].lx;//現在平台與下一塊平台的高度差以及下一塊平台左邊界的距離

int nrighttime = y - platforms[i].h + platforms[i].rx - x;//現在平台與下一塊平台的高度差以及下一塊平台右邊界的距離

if (leftmintime[i] == -1) //等於-1表示我初始化過 ,如果還可以向左我們就向左

leftmintime[i] = mintime(i, true);//向左進入子問題

if (l[i] == -1)//等於-1表示我初始化過 ,如果還可以向右我們就向右

l[i] = mintime(i, false);//像右進入子問題

nlefttime += leftmintime[i];//左邊固定花費的時間加上下一場左邊這樣的時間

nrighttime += l[i];//右邊固定花費的時間加上下一場右邊這樣的時間

//返回左邊和右邊走中值小的那乙個

**實現:

#includeusing namespace std;

const int max = 105;

int row, col;

int map[max][max]; // 記錄圖各點的高度。

int dp[max][max]; // 記錄以各點為起點的最長下降路徑的長度。

int dfs(int r, int c)

if (r - 1 >= 1 && map[r][c] > map[r - 1][c])

if (c + 1 <= col && map[r][c] > map[r][c + 1])

if (c - 1 >= 1 && map[r][c] > map[r][c - 1])

return map[r][c] = max;

}int main()

cout << ans << endl;

return 0;

}

動態規劃 Help Jimmy

場景中包括多個長度和高度各不相同的平台,地面是最低的平台,高度為零,長度無限,jimmy老鼠在時刻 0 從高於所有平台的某處開始下落,它的下落速度始終為1公尺 秒,當jimmy落到某個平台上時,遊戲者選擇讓它向左還是向右跑,它跑動的速度也是1公尺 秒,當jimmy跑到平台的邊緣時,開始繼續下落,ji...

POJ1661Help Jimmy(動態規劃)

description help jimmy 是在下圖所示的場景上完成的遊戲。場景中包括多個長度和高度各不相同的平台。地面是最低的平台,高度為零,長度無限。jimmy老鼠在時刻0從高於所有平台的某處開始下落,它的下落速度始終為1公尺 秒。當jimmy落到某個平台上時,遊戲者選擇讓它向左還是向右跑,它...

poj 1661 Help Jimmy 動態規劃

題意 給n個用左端點 右端點 高度標識的平台,問乙個下落速度,移動速度均為1的點下落到地面的最小時間,其中每次下落距離不能超過輸入值max.分析 動態規劃ldp i 表示從第i塊木板左邊下落到地面的最小時間,rdp i 表示從第i塊木板右邊下落到地面的最小時間。poj 1661 sep9 inclu...