ZJU-1093

 

DP,先对输入进行处理,每一个立方体处理为3个面,如有尺寸雷同面,则合并。
保证每个面的x<y。

然后为了减小无效搜索的次数,对于面进行了排序,以y为第一关键字,x为第二关键字,都是用quicksort,发现快速排序用起来真的是挺方便,不过不要排序直接DP应该也是没有问题的。

(当然merge sort还能更快,就是代码太多了。值得一提的是尽管merge sort和heap sort的最坏情况的复杂度都是比较排序的极限O(nlgn)但是其中隐含的参数还是有些区别的,merge sort要更快一些。)

排完了序以后,能放在第i个面上的面必定在0~i-1中,maxdone[]这个数组存储已经计算出的每个面上能包括该面能垒的最高高度,所以符合DP的要求
1.最优子结构:如果第i个面已经是最高高度,则它上面的i-1这个面以上也是i-1这个面可以垒的最高高度。
2.重叠子问题:重叠的子问题的结果存储在maxdone[]用来加速计算。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值