【dp】POJ 1661 Help Jimmy
2017-02-23 21:07
351 查看
/* 基础dp M - Help Jimmy 时间: 2017/02/23 题意: 题解: 首先无疑的肯定要按高度进行从高到低排序,肯定有解,那么高度肯定加上去,再加上最少的横向走的时间 应该有两种决策,向左跳,向右跳 dp[i][0] 代表以i左边为起点向左跳到达地面的距离,dp[i][1] 代表以i右边为起点向右跳到达地面的距离 如果i平台左能跳到j平台: dp[i][0] = min(dp[j][0]+a[i].l-a[j].l ,dp[j][1]+a[j].r-a[i].l) +a[i].h-a[j].h; 同理i平台右边。 */ #include<cstdio> #include<cstring> #include<cmath> #include<iostream> #include<algorithm> #include<queue> #include<map> using namespace std; #define N 1010 #define INF 0x3f3f3f3f struct asd { int l,r,h; } a ; bool cmp(asd a,asd b) { return a.h > b.h; } int n,x,y,Max; int dp [2]; void pan(int i,int x,int choose) { int flag = 0; // 判断下面还有没有平台 for(int j = i+1; j <= n; j++) //寻找掉落的平台 { if(x >= a[j].l && x <= a[j].r) { flag = j; break; } } if(!flag) //没有平台 { if(a[i].h > Max) //没法跳 dp[i][choose] = INF; else dp[i][choose] = a[i].h; //到地面 } else { if(a[i].h-a[flag].h > Max) dp[i][choose] = INF; else dp[i][choose] = min(dp[flag][0]+x-a[flag].l ,dp[flag][1]+a[flag].r-x) +a[i].h-a[flag].h; } } int main() { int T; scanf("%d",&T); while(T--) { memset(dp,0,sizeof(dp)); memset(a,0,sizeof(a)); scanf("%d%d%d%d",&n,&x,&y,&Max); for(int i = 1; i <= n; i++) scanf("%d%d%d",&a[i].l,&a[i].r,&a[i].h); sort(a+1,a+n+1,cmp); for(int i = n; i >= 1; i--) { pan(i,a[i].l,0); pan(i,a[i].r,1); } int flag = 0; for(int j = 1; j <= n; j++) //寻找第一次掉落的平台 { if(x >= a[j].l && x <= a[j].r) { flag = j; break; } } if(flag) printf("%d\n",y-a[flag].h+min(dp[flag][0]+x-a[flag].l,dp[flag][1]+a[flag].r-x)); else printf("%d\n",y); } return 0; }
相关文章推荐
- POJ--1661--Help Jimmy--DP
- POJ 1661 Help Jimmy(基础dp)
- POJ 1661 Help Jimmy 一般dp
- POJ 1661 Help Jimmy【DP】
- poj-1661 Help Jimmy 【DP】
- POJ 1661 Help Jimmy (只能根据上面的坐标往下DP)
- 【DP】POJ_1661_Help Jimmy
- 【DP|暴力】POJ-1661 Help Jimmy
- POJ 1661 Help Jimmy(简单DP)
- POJ 1661 Help Jimmy(递推DP)
- 每日三题-Day4-B(POJ 1661 Help Jimmy 基础DP)
- poj(1661)——Help Jimmy(二维dp)
- POJ 1661 Help Jimmy 【DP ?】
- POJ 1661 Help Jimmy (DP)
- POJ 1661-Help Jimmy-dp
- POJ 1661 Help Jimmy 最短路或者dp
- POJ 1661 Help Jimmy【DP】
- POJ 1661 Help Jimmy (DP)
- POJ 1661 Help Jimmy【DP】
- POJ 1661 Help Jimmy