HDU 2795 Billboard(宣傳欄貼公告,線段樹應用)
HDU 2795 Billboard(宣傳欄貼公告,線段樹應用)
ACM
題目地址:HDU 2795 Billboard
題意:
要在h*w宣傳欄上貼公告,每條公告的高度都是為1的,而且每條公告都要盡量貼最上面最靠左邊的,給你一系列的公告的長度,問它們能不能貼上。
分析:
不是很好想,不過想到了就很好寫了。
只要把宣傳欄倒過來就好辦了,這時候就是變成有h條位置可以填公告,填放公告時就可以盡量找最左邊的合適的位置來放了。
可以用線段樹實現,查找的復雜度是O(logn),需要注意的坑點是h的范圍非常大,如果真的那麼大線段樹是開不下去的,但是n的范圍才20w,而即使所有公告都要占一欄也不會超過n,所以線段樹開min(h, n)就行了。
代碼:
/*
* Author: illuz
* Blog: http://blog.csdn.net/hcbbt
* File: 2795.cpp
* Create Date: 2014-08-05 16:12:47
* Descripton: segment tree
*/
#include
#include
#include
#include
#include