给出N个节点,M次操作,和p

每次操作 对l-r区间的每一个节点+c,若节点值>=p,则加2*c;

结点存当前区间伤害最小值,最大值,以及lazy操作。更新到假设最小值大于等于P,或者最大值小于P为止。

#include "stdio.h"
#include "string.h" struct node
{
int l,r,Min,Max,lazy;
} data[800010];
int p; int Max(int a,int b)
{
if (a<b) return b;
else return a;
} int Min(int a,int b)
{
if (a<b) return a;
else return b;
} void build(int l,int r,int k)
{
int mid;
data[k].l=l;
data[k].r=r;
data[k].Min=data[k].Max=data[k].lazy=0; if (l==r) return ; mid=(l+r)/2; build(l,mid,k*2);
build(mid+1,r,k*2+1);
} void Pushdown(int k)
{
if (data[k].l==data[k].r) return ;
if (data[k].lazy!=0)
{
data[k*2].lazy+=data[k].lazy;
data[k*2].Max+=data[k].lazy;
data[k*2].Min+=data[k].lazy;
data[k*2+1].lazy+=data[k].lazy;
data[k*2+1].Max+=data[k].lazy;
data[k*2+1].Min+=data[k].lazy;
data[k].lazy=0;
}
}
void updata(int l,int r,int k,int op)
{
int mid;
if (data[k].l==l && data[k].r==r)
{
if (data[k].Max<p)
{
data[k].lazy+=op;
data[k].Max+=op;
data[k].Min+=op;
return ;
}
if (data[k].Min>=p)
{
data[k].lazy+=2*op;
data[k].Max+=2*op;
data[k].Min+=2*op;
return ;
} } Pushdown(k); mid=(data[k].l+data[k].r)/2; if (r<=mid) updata(l,r,k*2,op);
else if (l>mid) updata(l,r,k*2+1,op);
else
{
updata(l,mid,k*2,op);
updata(mid+1,r,k*2+1,op);
}
data[k].Max=Max(data[k*2].Max,data[k*2+1].Max);
data[k].Min=Min(data[k*2].Min,data[k*2+1].Min);
} void query(int k)
{
if(data[k].l==data[k].r)
{
if (data[k].l!=1)
printf(" %d",data[k].Max);
else
printf("%d",data[k].Max);
return ;
}
Pushdown(k);
query(k*2);
query(k*2+1);
} int main()
{
int n,m,l,r,x;
while (scanf("%d%d%d",&n,&m,&p)!=EOF)
{
build(1,n,1);
while (m--)
{
scanf("%d%d%d",&l,&r,&x);
updata(l,r,1,x);
}
query(1);
printf("\n");
}
return 0;
}

HDU 4107 线段树的更多相关文章

  1. hdu 5877 线段树(2016 ACM/ICPC Asia Regional Dalian Online)

    Weak Pair Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total ...

  2. hdu 3974 线段树 将树弄到区间上

    Assign the task Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  3. hdu 3436 线段树 一顿操作

    Queue-jumpers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  4. hdu 3397 线段树双标记

    Sequence operation Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  5. hdu 4578 线段树(标记处理)

    Transformation Time Limit: 15000/8000 MS (Java/Others)    Memory Limit: 65535/65536 K (Java/Others) ...

  6. hdu 4533 线段树(问题转化+)

    威威猫系列故事——晒被子 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Tot ...

  7. hdu 2871 线段树(各种操作)

    Memory Control Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  8. hdu 4052 线段树扫描线、奇特处理

    Adding New Machine Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  9. hdu 1542 线段树扫描(面积)

    Atlantis Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

随机推荐

  1. C#并行编程

    C#并行编程中的Parallel.Invoke 一.基础知识 并行编程:并行编程是指软件开发的代码,它能在同一时间执行多个计算任务,提高执行效率和性能一种编程方式,属于多线程编程范畴.所以我们在设计过 ...

  2. lua.c:80:31: fatal error: readline/readline.h: No such file or directory

    make linuxcd src && make linuxmake[1]: Entering directory `/root/lua/lua-5.3.2/src'make all ...

  3. 【BZOJ1014】【JSOI2008】火星人prefix Splay处理区间,hash+dichotomy(二分)check出解

    题意不赘述了,太清晰了. 说题解:首先依据原字符串建立SPT.首尾建议多加一个空白字符. 给一个树构图,依照平衡树的前后大小顺序性质能够使它们始终维持为一个序列,而且能够通过rank找到序列的第k个. ...

  4. Object-C 新手教程

    大纲 開始吧 下载这篇教学 设定环境 前言 编译 hello world 创建 Classes @interface @implementation 把它们凑在一起 具体说明... 多重參数 建构子( ...

  5. JAVA实现DAO基本层CRUD操作

    随着shh2各种操作方便框架.越来越多JAVA WEB效率,可是,假设在不了解这些框架使用的场合的情况下,一拿到项目就盲目地选择这些框架进行系统架构的搭建,就有可能造成非常多不是必需的资源浪费. 在项 ...

  6. 为应用程序池 'DefaultAppPool' 提供服务的进程关闭时间超过了限制

    服务器经常产生“应用程序池 'DefaultAppPool' 提供服务的进程关闭时间超过了限制.进程 ID 是 '2068'.”的错误,导致iis处于假死状态,经了解是IIS应用程序池的设置问题.解决 ...

  7. [Java][Android][Process] 分享 Process 运行命令行封装类型

    我在以前的文章中提到,使用Java不会有一个问题,创建运行命令来创建太多进程后创建进程行语句. [Android] ProcessBuilder与Runtime.getRuntime().exec分别 ...

  8. 第二章_session管理

    2.1 URL重写 URL重写是Session追踪技术.须要将一个或多个token做为一个查询字符串加入到一个URL中. Token的格式通常是键=值. Url?key-1=value-1&k ...

  9. C#基础之二

    C#基础之二 1.  静态字段.静态成员:由该类的所有实例共享,其变化,实例是对所有可见. 2.  声明为static有:场.方法.属性.构造函数.运营商.事件. 3.  不同的常量静态量:位置,在编 ...

  10. 【原】谈谈promise

    最近在看<你不知道的javascript中卷>,发觉作者花了基本一半的篇幅去讲异步和promise,觉得有必要总结一下. 其实本文的目的是想手写一个Promise的,无奈总结着总结着发觉篇 ...