上一页 1 ··· 6 7 8 9 10 11 12 13 下一页

2013年8月11日

UESTC 1425 Another LCIS

摘要: 也是一个求最长连续单调区间的问题,不同于HDU 3308LCIS的是,单点更新变成了区间成段增加,没关系同样的方法可破之。由于是成段更新,所以比更新区间小的区间是最大连续区间长度是不变的,所以更新sum[rt],lsum[rt],rsum[rt]只需要更新到这些区间,然后向上合并就行了。但是速度还是慢了一点699ms,总觉得哪里还有改进的地方。 1 #include 2 #include 3 #include 4 #define lson l,m,rtA[mid]) 18 { 19 if(lsum[rt]==(m-(m>>1))) 20 ... 阅读全文

posted @ 2013-08-11 19:10 rootial 阅读(245) 评论(0) 推荐(0)

2013年8月10日

hdu 3308 LCIS

摘要: 最近开始线段树一段时间了,也发现了不少大牛的博客比如HH大牛 ,小媛姐。这个题目是我在看HH大牛的线段树专题是给出的习题,(可以去他博客找找,真心推荐)原本例题是POJ3667 Hotel这个题目,是一个求连续空区间的情况,而hdoj这个题目是求给定区间单调连续的最大区间长度,两个题目思路很相似,将节点rt用sum[rt],lsum[rt],rsum[rt]来描述,分别表示rt对应区间即[l,r]内满足条件的区间的最大长度,从左边端点l开始满足条件的最大区间长度,从右边r开始向左的满足条件的最大区间长度。void PushUp(int rt,int m,int mid)//mid表示更新区间的 阅读全文

posted @ 2013-08-10 22:31 rootial 阅读(516) 评论(0) 推荐(0)

HDU 3308 LCIS 线段树区间更新

摘要: 最近开始线段树一段时间了,也发现了不少大牛的博客比如HH大牛 ,小媛姐。这个题目是我在看HH大牛的线段树专题是给出的习题,(可以去他博客找找,真心推荐)原本例题是POJ3667 Hotel 这个题目,是一个求连续空区间的情况,而hdoj这个题目是求给定区间单调连续的最大区间长度,两个题目思路很相似,将节点rt用sum[rt],lsum[rt],rsum[rt]来描述,分别表示rt对应区间即[l,r]内满足条件的区间的最大长度,从左边端点l开始满足条件的最大区间长度,从右边r开始向左的满足条件的最大区间长度。void PushUp(int rt,int m,int mid)//mid表示更新区间 阅读全文

posted @ 2013-08-10 22:23 rootial 阅读(117) 评论(0) 推荐(0)

poj crane

摘要: 1 #include 2 #include 3 #include 4 #include 5 #define N (10010>1; 55 build(lson); 56 build(rson); 57 PushUp(rt); 58 } 59 60 void update(int p,int del,int l,int r,int rt) 61 { 62 if(l==r) 63 { 64 double rad=getrad(del); 65 Rotate(rt,rad); 66 return; ... 阅读全文

posted @ 2013-08-10 09:05 rootial 阅读(260) 评论(0) 推荐(0)

2013年8月8日

poj1436 Horizontally Visible Segments

摘要: 这是一个区间更新的题目,先将区间放大两倍,至于为什么要放大可以这样解释,按照从左到右有4个区间,y值是[1,5],[1,2],[3,4],[1,4]如果不放大的话,查询[1,4]区间和前面区间的”可见“情况时,由于[1,2],[2,3]将2,3端点覆盖,最终得不到[1,5]和区间[1,4]”可见“的情况,而实际上两者的[2,3]区间是可以存在一条水平线将其直接相连的。接下来将要更新的区间按照x从小到大排序,然后依次查询,查询之后再更新就行。这样可以得到一个描述各个区间的相互关系的图G[N],G[i]存储的是在区间i右边的”可见“的区间,最后暴力统计一下,就可以解决问题了。 1 #includ. 阅读全文

posted @ 2013-08-08 20:16 rootial 阅读(196) 评论(0) 推荐(0)

2013年8月7日

编程习惯记录

摘要: >>2013.08.07%c会读入空格,对于有空格而又不想读入的情况应当注意。 阅读全文

posted @ 2013-08-07 19:12 rootial 阅读(111) 评论(0) 推荐(0)

poj 3225 Help with Intervals

摘要: 最近在做线段树的专题,发现HH大牛有一个非常好的专题博客,http://www.notonlysuccess.com/index.php/segment-tree-complete/ ,所以很多博客都是看了他的解题后凭着回忆和自己的理解再写的一遍代码,所以呢别说我抄袭就行了,我只是想加深自己的回忆,在这里感谢HH大牛这么规范,简洁的代码,让我这个新手学起来找到一点感觉。言归正传,下面开始回忆>.=r时,而且操作又是将该区间全部变成0,或者全部变成1,就可以不向下更新了,直接cover[rt]=1,或者0,(根据情况),XOR[rt]应当变成0,由于整个区间情况一致。所以以后遇到rt节点对 阅读全文

posted @ 2013-08-07 19:09 rootial 阅读(222) 评论(0) 推荐(0)

UVA 1513 Movie collection

摘要: 1 #include 2 #include 3 #include 4 #define N 200010 5 #define lson l,m,rt=N-n)&&l>1;25 build(lson);26 build(rson);27 PushUp(rt);28 }29 30 void update(int i,int c,int l,int r,int rt)31 {32 if(l==r)33 {34 sum[rt]=c;35 return;36 }37 int m=(l+r)>>1;38 if(... 阅读全文

posted @ 2013-08-07 00:57 rootial 阅读(327) 评论(0) 推荐(0)

2013年8月6日

POJ 2528 Mayor's posters

摘要: 一个线段树关于区间更新的题目。贴海报最后求能够看见的海报的数目,按照贴的顺序依次对线段树的[l,r]区间进行更新,注意使用延迟标记。由于数据较大,所以必须先离散化处理,即取海报的区间的两端的值存储下来,然后排序映射到1,2,3,......n然后对每张海报按照区间端点对应的映射号更新即可。 1 #include 2 #include 3 #include 4 #define N 11111 5 #define M 11111111 6 #define lson l,m,rt=r) 24 { 25 color[rt]=c; 26 retu... 阅读全文

posted @ 2013-08-06 23:20 rootial 阅读(154) 评论(0) 推荐(0)

POJ 3468 A Simple Problem with Integers

摘要: 这个题目涉及到线段树的成段更新,中间需要注意变量的类型是 __int64,update函数用来更新[L,R]区间的数,当L=r时,可以不向下更新,将增加值c存储在记录该节点的对应区间应该增加量的变量中,也就是进行color[rt]+=c操作,等到下次更新该区间时向下更新或者查询区间和时更新。顺便提醒一下自己:以后遇到用long long ,__int64的题目里面变量最好统一一个类型,不然很容易混淆。代码: 1 #include 2 #include 3 #define N 100010 4 #define maxn (1>1;25 build(lson);26 build(r... 阅读全文

posted @ 2013-08-06 18:29 rootial 阅读(165) 评论(0) 推荐(0)

上一页 1 ··· 6 7 8 9 10 11 12 13 下一页
< 2025年4月 >
30 31 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 1 2 3
4 5 6 7 8 9 10

导航

统计

点击右上角即可分享
微信分享提示