摘要:
题意:有一块长方形的广告板,往上面贴广告,然后给n个1*wi的广告,要求把广告贴上去,如果前面的行可以贴,就要贴前面的并且要靠左贴,前面的贴不下就贴在下面,广告的高度是wi,如果能贴在上面输出最小的高度,如果不能就输出-1。解题思路:如果以行数为区间,建立线段树,他给的h有10^9次,是创不了10^9这么大的数组的。然而我们知道给定N个广告,应为宽度一定,那么最高也不会超过N;只是我们可以开4×N为数组来建树;我把最后树的叶子节点表示广告牌的高度,并且左边的高度小于右边的;而父节点存储子节点的最大剩余值,如果最大值都比wi都小,则表示该节点不可能贴上广告,那么我们就要回朔到上一个节点 阅读全文
posted @ 2012-02-24 18:31
wutaoKeen
阅读(651)
评论(0)
推荐(0)
摘要:
该题是一道区间求和的问题,同时对区间值进行改变,这里我们用到lazy,以便我们不要更新到每个节点,直到我们要用到时我们才往下传递,这样就可以节省时间;#include<cstdio>#include<iostream>#include<cstring>using namespace std;class Node{ public: int l,r,mid; long long lazy,sum;};Node tree[400024];long long num[100024];class Tree{ public: void Maketree( in... 阅读全文
posted @ 2012-02-24 15:33
wutaoKeen
阅读(229)
评论(0)
推荐(0)