今天我做的一道经典动归题The Tower of Babylon

前面做的那道Bridging Signals是有技巧性的题目 因为题目要求o(n*logn)的复杂度
刚才又做了一道 The Tower of Babylon 题目不难 但是堪称经典啦

简述: 有N种石头(每种数量无限)题目给出每种的长宽高 先要求将其按底面积递减的顺序从下往上堆(注意是严格递减 对应边相等不算) 问最多可以堆多高?

分析:首先我想的是处理底面积的时候可能要分情况讨论,但是比较复杂。于是干脆将每块石头变成3块(这样就可以得到石头的真正总数了)。block代表所有石头 有3个成员x,y,z.

 然后将其按照底面积大小从大到小排序。建立一个数组h[],h[i]记录的是当前石头作为顶上石头时候的总高度。于是状态转移方程为 h[i] = max {h[j]+block[i].z)。输出最大的height[i]就可以了

呵呵 做完之后不知怎么觉得好爽啊~~

你可能感兴趣的:(今天我做的一道经典动归题The Tower of Babylon)