例 Help Jimmy
题目链接:点击打开链接
解题思路
if(板子k左端正下方没有别的板子)
{if(板子k的高度h(k)大于Max)
LeftMinTime(k)=无穷大;
else
LeftMinTime(k)=h(k);
}
else if(板子k左端正下方的板子编号是m)
LeftMinTime(k)=h(k)-h(m)+Min(LeftMinTime(m)+Lx(k)-Lx(m),RightMinTime(m)+Rx(m)-Lx(k));
}
![](https://i-blog.csdnimg.cn/blog_migrate/0301a30d002b6430f528a6f30db9a655.png)
代码实现:
/*
POJ1661 Help Himmy
这样效率太低了,一早上没看几个题
代码要是不是特别好看懂,先把伪代码写出来就比较好懂了
分析:
将板子由高到低按从0到n编号,起始点的为0
不妨认为Jimmy开始的位置是一个编号为0,长度为0的板子
设LeftMinTime(k)表示从k号板子左端到地面的最短时间
RightMinTime(k)表示从k号板子右端到地面的最短时间
if ( 板子