HDOJ1698 Just a hook【线段树---成段更新---lazy标志】

简介:

 

复制代码
/*
1
10
2
1 5 2
5 9 3
*/
#include <stdio.h>
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define maxn 111111
int sum[maxn<<2],lazy[maxn<<2];
void PullUp(int rt)//上拉
{
    sum[rt]=sum[rt<<1]+sum[rt<<1|1];
}
void PushDown(int rt,int len)//下推
{
    lazy[rt<<1]=lazy[rt<<1|1]=lazy[rt];
    sum[rt<<1]=lazy[rt]*(len-(len>>1));
    sum[rt<<1|1]=lazy[rt]*(len>>1);
    lazy[rt]=0;
}
void build(int l,int r,int rt)
{
    int m=(l+r)>>1;
    lazy[rt]=0;
    if(l==r){
        sum[rt]=1;
        return;
    }
    build(lson);
    build(rson);
    PullUp(rt);
}
void update(int z,int L,int R,int l,int r,int rt)
{
    int m=(l+r)>>1;
    if(l>=L&&r<=R){//当前区间是更新区间的子集,则一定要更新
        lazy[rt]=z;//标记
        sum[rt]=(r-l+1)*z;//更新当前区间
        return;
    }
    if(lazy[rt])PushDown(rt,r-l+1);//延迟标记下传一层
    if(L<=m)    update(z,L,R,lson);//左子树上有一部分
    if(R>m)        update(z,L,R,rson);//右子树上有一部分
    PullUp(rt);//上推
}
int main()
{
    int t,n,q,x,y,z,i;
    scanf("%d",&t);
    for (i=1;i<=t;i++){
        scanf("%d",&n);
        build(1,n,1);
        scanf("%d",&q);
        while (q--){
            scanf("%d%d%d",&x,&y,&z);
            update(z,x,y,1,n,1);
        }
        printf("Case %d: The total value of the hook is %d.\n",i,sum[1]);
    }
    return 0;
}
复制代码

 

 


本文转自ZH奶酪博客园博客,原文链接:http://www.cnblogs.com/CheeseZH/archive/2012/05/02/2479803.html,如需转载请自行联系原作者

相关文章
|
中间件 Unix 应用服务中间件
|
XML Java Shell
自制北京某医院挂号工具
最近听说亲戚家的小孩生病,但是经常挂不上号,每次都要找黄牛帮忙挂号,黄牛每次都要收300块钱,所以我就想帮帮他们,所以写了一个挂号工具,通过它可以更快的完成『查票->挂号->付款』的操作流。本文记录了制作该工具的思路和使用的工具。
|
8月前
|
JavaScript 前端开发 Unix
|
开发框架 并行计算 算法
揭秘Python并发神器:IO密集型与CPU密集型任务的异步革命,你竟还傻傻分不清?
【7月更文挑战第18天】Python并发编程中,异步IO适合IO密集型任务,如异步HTTP请求,利用`asyncio`和`aiohttp`实现并发抓取,避免等待延迟。而对于CPU密集型任务,如并行计算斐波那契数列,多进程通过`multiprocessing`库能绕过GIL限制实现并行计算。选择正确的并发模型能显著提升性能。
276 2
|
Rust 安全 程序员
Rust中的异步编程:Futures与Async/Await的深入解析
Rust作为一种系统级编程语言,近年来因其内存安全、高性能和并发处理能力而受到广泛关注。在Rust中,异步编程是实现高效并发处理的关键。本文将探讨Rust中的异步编程概念,详细介绍Futures与Async/Await这两种主要实现方式,并解析它们在实际应用中的优势与挑战。
|
Java 调度
@Scheduled阻塞导致未执行生效
@Scheduled阻塞导致未执行生效
366 0
|
机器学习/深度学习 Rust 资源调度
Rust机器学习之Plotters
本文是“Rust替代Python进行机器学习”系列文章的第四篇,带领大家学习如何用Plotters作图。
1551 0
Rust机器学习之Plotters
|
缓存 负载均衡 架构师
阿里资深架构师钟华曰:中台战略思想与架构实战;含内部实施手册
最近在读一本书,叫做《企业IT架构转型之道:阿里巴巴中台战略思想与架构实战》,在写此文时本书还没有看完,因为担心如果把书全部看完后再来写这篇文章,很多精彩的内容可能已经忘记了,所以中途先写一篇来分享给大家。
|
编译器 C++
Visual Studio 2022 中如何设置背景图片,壁纸
Visual Studio 2022 中如何设置背景图片,壁纸
|
数据可视化 数据挖掘 数据处理
数据科学手把手:碳中和下的二氧化碳排放分析 ⛵
气候是全球性的话题,本文基于owid co2数据集,分析了世界各地的二氧化碳排放量,并将二氧化碳排放的主要国家以及二氧化碳排放来源进行了可视化。
2535 1
数据科学手把手:碳中和下的二氧化碳排放分析 ⛵

热门文章

最新文章