
ACM水题之路—线段树
文章平均质量分 71
a342374071
这个作者很懒,什么都没留下…
展开
-
poj 2528 Mayor's posters(区间涂色)
这个题目很多网上的解题报告都是错的,但是交了可以AC。不过我还是仔细检查了一下,最后自己写了二天,很悲剧。第一次是因为最后的查询区间的(1,k) 写成了(1,n)导致一直检查不出错误,但是从过程中又得到的是正确答案。第二次是因为离散化,反正是相当的蛋疼。做线段树已原创 2011-08-31 16:08:27 · 566 阅读 · 0 评论 -
hdu 1542 ,1255 线段树面积并与面积交
/*在这里将一个一个的矩形分隔成两条平行X轴的线,在下面一条标记为正边,上面一条标记为负边。cnt表示的次节点被覆盖的次数。sum表示区间一次覆盖以上的长度len表示区间二次覆盖以上的长度*/#include#include#include#includeusing namespace std;#define maxn 2222#define lson l,m,rt<<1原创 2011-12-15 21:27:06 · 859 阅读 · 0 评论 -
hdu1543 Paint the Wall
#include #include #include #include using namespace std;#define maxn 205//自己写了一个cin的流输入,果断地WA,maxn最好大于150,因为之间重复可能大于100int colors[maxn],n,m; int x[maxn],y[maxn],lenx,leny,map[10005][10005];s原创 2011-12-06 19:16:47 · 1084 阅读 · 0 评论 -
hdu 1556 初级线段树
#include#include#include#define Max 100005#define mid (l+r)>>1#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1using namespace std;i原创 2011-09-26 22:19:07 · 836 阅读 · 0 评论 -
poj3468 A Simple Problem with Integers
区间求和,区间更新。需要覆盖区间,延迟处理。void PushSub(int rt,int m){ if(color[rt]){ color[rt<<1]+=color[rt]; color[rt<<1|1]+= color[rt]; sum[rt>原创 2011-08-29 11:04:38 · 438 阅读 · 0 评论 -
hdu 1698 Just a Hook(成段更新)
color标记待更新,更新完标记为0;#include#define M 100005#define mid (l+r)>>1#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1int color[M<<2],sum[M原创 2011-08-27 22:14:45 · 405 阅读 · 0 评论 -
poj 2828 Buy Tickets(线段树)
(图画烂的一逼)按照第一个题例数据来说。从后面开始插,正好能保证它就是在它最后的位置。f表示的是这个区间还剩余多少个空位。插入69时候,直接插在最后位置上,那么后面两个位置减去一。然后更新空位。大致思路就是这样。#include #define M 2原创 2011-08-26 22:06:02 · 624 阅读 · 0 评论 -
hdu 1166 敌兵布阵(线段树入门题)
#include#include#define M 50005#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1int sum[M<<2];void PushPlus(int rt){ sum[rt] = sum原创 2011-08-24 16:31:32 · 576 阅读 · 0 评论 -
hdu 2795 Billboard(线段树)
代码如下:#include#define mid (l+r)>>1#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define M 200001#define max(a,b) (a)>(b)?(a):(b)#d原创 2011-08-26 12:19:59 · 762 阅读 · 0 评论 -
hdu 1394 最小逆序数(线段树版本)
从该数字num[i]就可以知道比它小的数有num[i]个,比它大的数有n-1-num[i]个. 每次把num[i]放到最后时,summ = summ – num[i] + n-1-num[i];#include#define Min(a,b)原创 2011-08-24 21:24:25 · 623 阅读 · 0 评论 -
hdu 1754 (区间最大线段树基础题)
#include#define M 200005#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1int Max[M<<2];void Pushdata(int rt){ Max[rt] = Max[rtMax[r原创 2011-08-24 17:34:16 · 704 阅读 · 0 评论 -
hdu 2665 Kth number(线段树+归并树+二分)
#include #include #include #include using namespace std;#define maxn 100005#define maxd 21struct seg{ int l,r,m;}tr[maxn<<2];int s[maxn],segt[maxd][maxn<<2],n;void build(int l,int r,int rt,原创 2012-03-07 22:21:29 · 1067 阅读 · 0 评论