HDU 2795 Billboard
摘要:
题意:有一个h*w的广告牌,在这上要贴一些广告,每个广告的高度为一个单位,宽为WI,这样广告牌就可以分成h个层。逐个给出一些广告所占的宽度问你这个广告可以放在第几层(广告尽量靠上靠又)。题解:线段树。把每一层抽象成一个数,在这些数中找出一个层数最小且大于WI的数,并进行更新(当这一层被一个广告占用一部分时,这个数就减去相应的宽度)。这里还有个问题:h大到10^9,如果按给定的h建树的话肯定会爆内存!这里注意到n<=20,000,最多占用20,000行,所以只要按如下方式处理就可以了。if(h>n)h=n;AC代码:View Code 1 #include<cstdio> 阅读全文
posted @ 2012-10-12 21:57 Acmer_Roney 阅读(136) 评论(0) 推荐(0) 编辑