日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

POJ1661 Help Jimmy(dp)

發(fā)布時間:2025/3/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ1661 Help Jimmy(dp) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

"Help Jimmy" 是在下圖所示的場景上完成的游戲。


場景中包括多個長度和高度各不相同的平臺。地面是最低的平臺,高度為零,長度無限。
Jimmy老鼠在時刻0從高于所有平臺的某處開始下落,它的下落速度始終為1米/秒。當Jimmy落到某個平臺上時,游戲 者選擇讓它向左還是向右跑,它跑動的速度也是1米/秒。當Jimmy跑到平臺的邊緣時,開始繼續(xù)下落。Jimmy每次下落的高度不能超過MAX米,不然就 會摔死,游戲也會結(jié)束。
設(shè)計一個程序,計算Jimmy到底地面時可能的最早時間。

Input

第一行是測試數(shù)據(jù)的組數(shù)t(0 <= t <= 20)。每組測試數(shù)據(jù)的第一行是四個整數(shù)N,X,Y,MAX,用空格分隔。N是平臺的數(shù)目(不包括地面),X和Y是Jimmy開始下落的位置的橫豎坐 標,MAX是一次下落的最大高度。接下來的N行每行描述一個平臺,包括三個整數(shù),X1[i],X2[i]和H[i]。H[i]表示平臺的高度,X1[i] 和X2[i]表示平臺左右端點的橫坐標。1 <= N <= 1000,-20000 <= X, X1[i], X2[i] <= 20000,0 < H[i] < Y <= 20000(i = 1..N)。所有坐標的單位都是米。

Jimmy的大小和平臺的厚度均忽略不計。如果Jimmy恰好落在某個平臺的邊緣,被視為落在平臺上。所有的平臺均不重疊或相連。測試數(shù)據(jù)保證問題一定有解。

Output

對輸入的每組測試數(shù)據(jù),輸出一個整數(shù),Jimmy到底地面時可能的最早時間。

Sample Input

1 3 8 17 20 0 10 8 0 10 13 4 14 3

Sample Output

23

思路:用從下往上的方法,dp[i][0]為第i個平臺左端到地面的最短時間,dp[i][1]為第i個平臺右端到地面的最短時間,然后就比較好理解了。
附上我的0ms代碼~
/* *********************************************** Author :devil Created Time :2015/12/23 09:55:37 ************************************************ */#include <iostream> #include <algorithm> #include <cstring> #include <cmath> #include <queue> #include <map> #include <set> #include <vector> #include <cstdio> using namespace std; #define inf 0x3f3f3f3f struct wq {int l,r,h; } f[1010]; bool cmp(wq a,wq b) {return a.h<b.h; } int dp[1010][2]; int main() {//freopen("in.txt","r",stdin);int t;scanf("%d",&t);while(t--){int n,X,Y,ma;scanf("%d%d%d%d",&n,&X,&Y,&ma);for(int i=1; i<=n; i++)scanf("%d%d%d",&f[i].l,&f[i].r,&f[i].h);f[0].l=-20000;f[0].r=20000;f[0].h=0;n++;sort(f,f+n,cmp);for(int i=1; i<n; i++){int f1=1,f2=1;for(int j=i-1; j>=0; j--){if(f[i].h-f[j].h>ma){if(f1) dp[i][0]=inf;if(f2) dp[i][1]=inf;break;}if(!f1&&!f2) break;if(!j){if(f1) dp[i][0]=f[i].h;if(f2) dp[i][1]=f[i].h;break;}if(f1&&f[i].l>=f[j].l&&f[i].l<=f[j].r){f1=0;dp[i][0]=f[i].h-f[j].h+min(dp[j][0]+f[i].l-f[j].l,dp[j][1]+f[j].r-f[i].l);}if(f2&&f[i].r<=f[j].r&&f[i].r>=f[j].l){f2=0;dp[i][1]=f[i].h-f[j].h+min(dp[j][1]+f[j].r-f[i].r,dp[j][0]+f[i].r-f[j].l);}}}int flag=1,ans;for(int i=n-1; i>0; i--){if(X>=f[i].l&&X<=f[i].r){flag=0;ans=Y-f[i].h+min(dp[i][0]+X-f[i].l,dp[i][1]+f[i].r-X);break;}}if(flag) ans=Y;printf("%d\n",ans);}return 0; }

?

轉(zhuǎn)載于:https://www.cnblogs.com/d-e-v-i-l/p/5069020.html

總結(jié)

以上是生活随笔為你收集整理的POJ1661 Help Jimmy(dp)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。