线段树
Hearthougan
这个作者很懒,什么都没留下…
展开
-
hdu 1166 敌兵布阵 线段树
#include #include #include #include #define lson l, m, rt << 1 #define rson m+1, r, rt << 1 | 1 using namespace std; const int MAXN = 50010; int sum[MAXN<<2]; void PushUp(int rt) { sum[rt原创 2013-11-18 01:39:23 · 832 阅读 · 0 评论 -
hdu 2795 Billboard 线段树
#include #include #include #include #define lson l, m, rt << 1 #define rson m+1, r, rt << 1 | 1 using namespace std; const int MAXN = 222222; int h, w, n; int MAX[MAXN<<2]; void PushUp(int rt)原创 2013-11-19 01:21:07 · 911 阅读 · 0 评论 -
1394 Minimum Inversion Number 线段树
题目大意:给定数列a[1]、a[2]··········a[n],每次将移动首项移动到末尾,每移动一次,计算数列的逆序数,在一系列移动之后,求最小的逆序数。 分析: 首先求出输入序列的逆序数,然后每次取其与移动一次之后的逆序数的最小值。n-1表示最大数,n-1 - x[i]表示首项x[i]移动到数列末尾后会产生几个逆序,但是当x[i]作为首项时,会有x[i]个逆序,因此,n-1-x[i]原创 2013-11-18 17:48:47 · 848 阅读 · 0 评论 -
poj 3468 A Simple Problem with Integers
#include #include #include using namespace std; #define lson l, m, rt << 1 #define rson m+1, r, rt << 1 | 1 typedef __int64 LL; const int MAXN = 100010; LL add[MAXN<<2]; LL sum[MAXN<<2]; void P原创 2013-11-20 08:37:10 · 775 阅读 · 0 评论 -
1698 Just a Hook 线段树区间更新
线段树区间更新,有个懒惰标记,每次更新不进行到底,,用懒惰标记使得更新延迟到下次需要更新或者询问到的时候。 #include #include #include #include #define lson l, m, rt << 1 #define rson m+1, r, rt << 1 | 1 using namespace std; const int MAXN = 20002原创 2013-11-19 20:52:45 · 888 阅读 · 0 评论 -
poj 2528 Mayor's posters
题目大意: 往墙上贴海报,可以互相覆盖,问最终可以看到多少张海报?露出一部分的也算可以看到。 分析: 由于本题数据比较大,因此处理时需要离散化,离散化是一种压缩区间的手段,可以降低复杂度。例如:[100,1000],[1010, 2012],[880, 2013];我们所需要的数据也就是100,1000,1010,2010,880,2013,对于[-∞,99],[101,87原创 2013-11-20 13:09:24 · 834 阅读 · 0 评论 -
hdu 1754 I Hate It 线段树Test
#include #include using namespace std; #define lson l , m , rt << 1 #define rson m + 1 , r , rt << 1 | 1 const int maxn = 222222; int MAX[maxn<<2]; void PushUP(int rt) { MAX[rt] = max(MAX[rt<<1] ,原创 2013-11-18 12:48:09 · 898 阅读 · 0 评论