线段树
hadis_fukan
这个作者很懒,什么都没留下…
展开
-
hdu 2795 Billboard
题目大意: 给一个h*w的公告牌,h是高度,w是宽度,一个单位高度1为一行,然后会有一些公告贴上去,公告是1*wi大小的长纸条,优先贴在最上面并且最左边的位置,如果没有空间贴得下,就输出-1,可以的话,就输出所贴的位置(第几行)。 分析: 叶节点【x,x】表示board的第x行还可以放置的长度,区间【a,b】表示第a行到b行中剩下空间最大的那一行是多少,如果要把长w的公告放入board时就是原创 2014-01-04 19:15:00 · 675 阅读 · 0 评论 -
hdu 1556 Color the ball (树状数组||线段树成段更新)
题意: N个球,N次操作,每次操作将a到bqujian原创 2014-11-01 00:38:50 · 682 阅读 · 0 评论 -
poj 2528 Mayor's posters (线段树+离散化+hash)
题意:n(n 求出最后还能看见多少张海报。 输入: 1 5 1 4 2 6 8 10 3 4 7 10 解法:离散化,如下面的例子(题目的样例),因为单位1是一个单位长度,将下面的 1 2 3 4 6 7 8 10 — — — — — — — — 1 2 3原创 2014-08-07 11:42:01 · 561 阅读 · 0 评论 -
hdu 1698 Just a Hook (线段树---成段更新)
用到了懒惰标记lazy[]即我的代码中的col[]。 以前不知道这东西是什么,原创 2014-08-07 08:29:27 · 676 阅读 · 0 评论 -
poj 3468 A Simple Problem with Integers (线段树---成段更新)
成段加减 queli原创 2014-08-07 09:11:59 · 527 阅读 · 0 评论 -
poj 2828 Buy Tickets (线段树---单点更新)
题意: 给出n个数要插入的w原创 2014-08-02 23:46:38 · 575 阅读 · 0 评论 -
hdu 1394 Minimum Inversion Number
题意:按题意所诉规则得到若干序列,求这些序列中逆序数的最小值。 update:单点增减 , Queue:区间求和。 线段树的每一个节点记录的是在第i个数输入之前数列存在的区间的数字的数量 首先记录初始状态下的逆序数对的数量。 然后我们用递推: 当a0移到队末的时候,它比上一个序列多出来的是这个队列中比他大的,同时,又比它一个序列少 这个序列中比它小的数字的数原创 2014-01-04 00:36:51 · 655 阅读 · 0 评论 -
hdu 1754 I Hate It
线段树 update 单点替换 queue求 区间最值 #include #include #define lson l, m, rt<<1 #define rson m+1, r, rt<<1|1 using namespace std; const int maxn = 200010; int hg[maxn<<2]; void PushUP(int rt) { hg[原创 2014-01-03 20:51:39 · 716 阅读 · 0 评论 -
hdu 1166 敌兵布阵
线段树单点更新。 (刚刚开始学线段树T。T....) #include #include #define lson l , m , rt<<1 #define rson m+1 , r , rt<<1|1 const int maxn = 55555; int sum[maxn<<2]; void PushUP(int rt) { sum[rt] = sum[rt<<1]原创 2014-01-03 19:38:14 · 857 阅读 · 2 评论 -
hdu 5172 GTY's gay friends (线段树||hash)
题意: n个数m个询问,询问(l,r)中的数是否为1 ~ r-l+1的一个排列。 分析: 若(l,r)中的数为1 ~ r-l+1中的一个排列,则必须满足: 1、(l,r)中的数之和为len*(len+1)/2,其中len = r-l+1。 2、区间内的数字各不相同,即用线段树维护位置i上的数上次出现的位置的最大值。 只要区间内所有的数上次出现的位置last[i] #incl原创 2015-02-10 09:50:21 · 616 阅读 · 0 评论