Hdu 5200 Trees (离线线段树)

题目大意:

校门外栽满了不同高度的树,每一次询问是 如果砍掉所有高度不超过q的树,那么还有多少个连续的块。


思路分析:

记录左连续和   右连续和  用来维护区间的连续块的数量。

seg[num] = seg[num<<1]+seg[num<<1|1] ;

如果中间部分连起来  那么减一即可。


#include 
#include 
#include 
#include 
#define maxn 50005
#define lson num<<1,s,mid
#define rson num<<1|1,mid+1,e
#define mid ((s+e)>>1)

using namespace std;

int lsum[maxn<<2],rsum[maxn<<2],seg[maxn<<2];
struct tree{
	int height;
	int pos;
	bool operator < (const tree &cmp)const{
		return height


你可能感兴趣的:(线段树)