题目:Just a Hook

延迟标记(或者说懒惰标记),简单来说就是每次更新的时候不要更新到底,用延迟标记使得更新延迟到下次需要更新or询问到的时候。

#include <stdio.h>
#define N 111111
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
int n;
int col[N<<2];
int sum[N<<2];
void PushUP(int rt)
{
sum[rt]=sum[rt<<1]+sum[rt<<1|1];
}
void PushDown(int rt,int m)
{
if(col[rt])
{
col[rt<<1]=col[rt<<1|1]=col[rt];
sum[rt<<1]=(m-(m>>1))*col[rt];
sum[rt<<1|1]=(m>>1)*col[rt];
col[rt]=0;
}
}
void Build(int l,int r,int rt)
{
col[rt]=0;
sum[rt]=1;
if(l==r)
return;
int m=(l+r)>>1;
Build(lson);
Build(rson);
PushUP(rt);
}
void Update(int L,int R,int c,int l,int r,int rt)
{
if(L<=l&&R>=r)
{
col[rt]=c;
sum[rt]=c*(r-l+1);
return;
}
PushDown(rt,r-l+1);
int m=(l+r)>>1;
if(L<=m)
Update(L,R,c,lson);
if(R>m)
Update(L,R,c,rson);
PushUP(rt);
}
int main()
{
int t,m,n,k=1;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
Build(1,n,1);
while(m--)
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
Update(a,b,c,1,n,1);
}
printf("Case %d: The total value of the hook is %d.\n",k++,sum[1]);
}
return 0;
}

线段树HDU1698(成段更新)相关推荐

  1. NYOJ 1068 ST(线段树之 成段更新+区间求和)

    ST 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 "麻雀"lengdan用随机数生成了后台数据,但是笨笨的他被妹纸的问题给难住了... 已知len ...

  2. 线段树(成段更新,区间求和lazy操作 )

    hdu1556 Color the ball Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O ...

  3. 线段树POJ3468(成段更新,区间求和)

    题目:A Simple Problem with Integers #include <stdio.h> #define N 111111 #define LL long long #de ...

  4. HDOJ 1698 Just a Hook(线段树成段更新)

    题意: 屠夫的钩子区间是1~n,每段可能由铜,银,金组成,价值分别为1,2,3,进行一系列的更新之后,求钩子的总价值. 思路: 线段树的成段更新:要设置一个临时的线段树,每次更新的时候把更新段的值放在 ...

  5. uscao 线段树成段更新操作及Lazy思想(POJ3468解题报告)

    线段树成段更新操作及Lazy思想(POJ3468解题报告) 标签: treequerybuildn2cstruct 2011-11-03 20:37 5756人阅读 评论(0) 收藏 举报  分类: ...

  6. HDU 3974 Assign the task(dfs时间戳+线段树成段更新)

    题意:给定点的上下级关系,规定假设给i分配任务a.那么他的全部下属.都停下手上的工作,開始做a. 操作 T x y 分配x任务y,C x询问x的当前任务: Sample Input 1 5 4 3 3 ...

  7. [HDOJ4027]Can you answer these queries?(线段树,特殊成段更新,成段查询)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4027 RT,该题要求每次更新是更新所有节点,分别求平方根,查询是求和.昨晚思前想后找有没有一个数学上的 ...

  8. 线段树模板(建树+更新)

    线段树建树模板 #define lson l,m,rt<<1 //2*rt #define rson m+1,r,rt<<1|1 //2*rt+1 int map[100000 ...

  9. Hdu 1794 【二维成段更新】.cpp

    题意: 给出一个n*n的矩阵和m个数,从m个数中选几个数填入矩阵中值为0的空格中,使矩阵的和最大. 矩阵的和的定义是:所有子矩阵的数的和的和..   思路: 要想矩阵的和最大..应该使m个数中值大的数 ...

最新文章

  1. 到底什么时候不应该使用机器学习?
  2. leetcode -- 3.无重复字符的最长子串
  3. iOS系统 越狱系统还原(平刷)
  4. 清华学生计划表,大写的服!
  5. 【转】C++从零实现神经网络
  6. spring如何下载源码和jar包
  7. android win10 style,不开玩笑,安卓可以体验 Windows 10 了
  8. Java 数组 快速排序
  9. 【Pytorch编程】Pytorch-Ignite v0.4.8的安装以及简单使用
  10. 扫雷外挂的设计与实现
  11. GD32的flash读保护和写保护
  12. 使用Kotlin+JetPack 从零开发自己的日记App
  13. 一则假新闻挑起卡塔尔断交危机?FBI:都怪俄黑客
  14. Tekla二次开发之切割部分的详解
  15. java实现销售预测算法,预测5天销售
  16. “毒舌”专家解析大数据应用案例Part1—高德交通大数据应用
  17. Photoshop - 高反差保留
  18. [机器学习基础][台大林轩田]机器学习概念
  19. matlab DSP6678,TI CC6678数字信号处理器 (DSP) 的50种用法
  20. flutter中好用的Widget-CupertinoPicker

热门文章

  1. 用户user空间和内核kernel空间
  2. 前端权限控制:实现思路分析-待修改
  3. 格式化输出浮点型变量
  4. 使用Sidecar支持异构平台的微服务
  5. Spring核心系列之Spring中的事务
  6. excel转html放在tomcat,Excel转web!把excel在线打开??
  7. php将数组中元素打乱顺序,PHP公开课|学会随机打乱数组元素顺序的函数,你的PHP会学的更好...
  8. Java基础查漏补缺(2)
  9. 流言终结者:大数据工程师真的做不过35岁吗?
  10. angular-ui-router路由备忘