摘要: 线段树:一整段区间修改数值,并询问一段区间的和(不过这里询问的整个区间的和,固定的,当然原理是一样)这题要用到LAZY标记,决定自己写一下LAZY标记先说题意:一个连续的线段,材料可能为金银铜,数值对应3,2,1,一开始所有单元都是铜,所以整段的和就是n。然后多个修改操作,每次为x,y,z把区间[x,y]的每个单元都变为数值z。z的值为1,2,3。所有的修改操作做完后,输出整个线段的和然后说一下LAZY思想的本质,就是“只做表面功夫,内部其实不合格,当某一次需要访问到内部的时候,再对内部处理”,这种偷懒的思想就能减少操作的次数,因为每次访问到线段树的深度不一定一样,不需要全部都处理掉。这个思想 阅读全文
posted @ 2013-01-31 23:22 Titanium 阅读(484) 评论(0) 推荐(0) 编辑
摘要: 线段树简单题:区间乘积,单点修改这题其实难度和之前的一样本来不想做的,但是学习了高手的代码,所以自己想实现一遍果然用了新的代码风格,时间大大提高,空间都减少,不过代码量好像没怎么变,一口气冲进了第10名10G-rated281MS1280K1572BC++2013-01-31 12:57:58#include <cstdio>#define N 50010const int MOD=1000000007;__int64 mul[4*N];int n,m;void updata(int a ,int b ,int p ,int e ,int root){ if(a==b) { ... 阅读全文
posted @ 2013-01-31 13:05 Titanium 阅读(252) 评论(0) 推荐(0) 编辑