题意:容易理解。

分析:时隔很久,再一次写了一道线段树的代码,之前线段树的题也做了不少,包括各种延迟标记,但是在组队分任务之后,我们队的线段树就交给了另外一个队友在搞,

然后我就一直没去碰线段树的题了,但是我现在发现这种做法不是很好,导致我现在的思维受到了很大的局限性,所以我现在想纠正这种错误,该做的就应该去做,就像

高中一样不能太偏科!一道比较简单的线段树延迟标记!

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath> struct node{
int l , r;
int sum;
int color;
}tree[*]; int n,len,a[]; void buildTree(int l,int r,int n)
{
int mid = (l + r) >> ;
tree[n].l = l;
tree[n].r = r;
tree[n].color = ;
if(l == r)
{
tree[n].sum = a[l];
return ;
} buildTree(l,mid,n*);
buildTree(mid+,r,n*+);
tree[n].sum = tree[n*].sum + tree[n*+].sum;
} void pushDown(int n)
{
tree[n*].sum = tree[n*].sum - (tree[n*].r - tree[n*].l + ) * tree[n].color;
tree[n*+].sum = tree[n*+].sum - (tree[n*+].r - tree[n*+].l + ) * tree[n].color;
tree[n*].color += tree[n].color;
tree[n*+].color += tree[n].color;
} int calSum(int x,int y,int n)
{
int mid = (tree[n].l + tree[n].r) >> ;
if(tree[n].l==x && tree[n].r == y)
return tree[n].sum;
if(tree[n].color)
{
pushDown(n);
tree[n].color = ;
} if(y <= mid)
return calSum(x , y , n*);
else if(x>mid)
return calSum(x , y , n*+);
else
return calSum(x , mid , n*) + calSum(mid+ , y , n*+);
} void update(int x , int y , int n)
{
int mid = (tree[n].l + tree[n].r) >> ; if(tree[n].l == x && tree[n].r == y)
{
tree[n].sum = tree[n].sum - (tree[n].r - tree[n].l + );
tree[n].color ++;
return ;
}
if(y <= mid)
update(x , y , n*);
else if(x > mid)
update(x , y , n*+);
else
{
update(x , mid , n*);
update(mid+ , y , n*+);
}
tree[n].sum = tree[n*].sum + tree[n* + ].sum;
} int main()
{
int i,q,x;
while(scanf("%d%d%d",&n,&len,&q)!=EOF)
{
for(i=;i<=n;i++)
scanf("%d",&a[i]);
buildTree(,n,);
while(q--)
{
scanf("%d",&x);
printf("%d\n",calSum(x , x+len- , ));
update(x , x+len- , );
}
}
return ;
}

最新文章

  1. C#在winform中调用系统控制台输出
  2. Jackson
  3. Postgresql 帐号密码修改方法
  4. java 进制转换
  5. fork和exec一起使用
  6. zip生成
  7. 天灵灵,地灵灵,但愿这个一定灵!!!python调用win32api,启动应用程序窗口
  8. 探索Microsoft.NET目录
  9. openstack 镜像自动扩容 resize拉伸
  10. POJ - 2653 - Pick-up sticks 线段与线段相交
  11. 关于Python的self指向性
  12. Zookeeper与Kafka集群搭建
  13. 洛谷 P2587 解题报告
  14. python 日常错误整理
  15. 高通sdm845_la2.0源码编译及使用QFIL刷机
  16. Xaml引用图片路径的方式
  17. BZOJ1069 SCOI2007 最大土地面积 凸包、旋转卡壳
  18. jmeter counter函数问题
  19. kendo treeview checkbox初始化选中问题,没解决,暂时记录下
  20. .net平台常用组建

热门文章

  1. IOS中延时执行的几种方式的比较
  2. 一行代码设置TForm颜色的前世今生(属性赋值引起函数调用,然后发消息实现改变显示效果),TForm的初始颜色在dfm中设置了clBtnFace色
  3. CentOS下对Apache的中文乱码处理
  4. HDU5092——Seam Carving(动态规划+回溯)(2014上海邀请赛重现)
  5. PHP 练习租房
  6. 日期工具类 - DateUtil.java
  7. js动态判断密码强度&amp;&amp;实用的 jQuery 代码片段
  8. Java中的public、protected、default和private的区别
  9. CSS3之创建透明边框三角
  10. iPad中控制器view的width和height