区间更新 + 统计更新长度

稍稍不注意就T了

#include<bits/stdc++.h>
#define lson l, m, rt<<1
#define rson m+1, r, rt<<1|1
using namespace std;
const int maxn = 100000 + 131;
int Ma[maxn<<2], Mi[maxn<<2], Lazy[maxn<<2];
int Cnt; void PushUp(int rt)
{
Ma[rt] = max(Ma[rt<<1], Ma[rt<<1|1]);
Mi[rt] = min(Mi[rt<<1], Mi[rt<<1|1]);
} void PushDown(int rt)
{
if(Lazy[rt] != -1)
{
Lazy[rt<<1] = Lazy[rt<<1|1] = Lazy[rt];
Ma[rt<<1] = Ma[rt<<1|1] = Lazy[rt];
Mi[rt<<1] = Mi[rt<<1|1] = Lazy[rt];
Lazy[rt] = -1;
}
} void Build(int l, int r, int rt)
{
Ma[rt] = Mi[rt] = 0;
Lazy[rt] = -1;
if(l == r) return ;
int m = (l + r) >> 1;
Build(lson), Build(rson);
} void Query(int L, int R, int val, int l,int r,int rt)
{
////////////////////////////////////
if(L <= l && r <= R)
{
if(val < Mi[rt]) return ;
if(val >= Ma[rt])
{
Ma[rt] = Mi[rt] = val;
Lazy[rt] = val;
Cnt += r - l + 1;
return ;
}
if(l == r) return ;
}
///////////////////////////////////////
PushDown(rt);
int m = (l + r) >> 1;
if(L <= m) Query(L, R, val, lson);
if(R > m) Query(L, R, val, rson);
PushUp(rt);
} int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
Cnt = 0;
Build(1,100000,1);
int l, r, val;
for(int i = 0; i < n; ++ i)
{
scanf("%d%d%d",&l,&r,&val);
r--;
Query(l,r,val,1,100000,1);
}
printf("%d\n",Cnt);
}
return 0;
}

LA 4108 (线段树)的更多相关文章

  1. 并查集 + 线段树 LA 4730 Kingdom

    题目传送门 题意:训练指南P248 分析:第一个操作可以用并查集实现,保存某集合的最小高度和最大高度以及城市个数.运用线段树成端更新来统计一个区间高度的个数,此时高度需要离散化.这题两种数据结构一起使 ...

  2. 线段树(区间合并) LA 3989 "Ray, Pass me the dishes!"

    题目传送门 题意:动态最大连续子序列和,静态的题目 分析:nlogn的归并思想.线段树维护结点的三个信息,最大前缀和,最大后缀和,该区间的最大和的两个端点,然后答案是三个的better.书上用pair ...

  3. LA 3938 动态最大连续和 线段树

    题目链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show ...

  4. LA 3938 动态最大连续和(线段树)

    https://vjudge.net/problem/UVALive-3938 题意:给出一个长度为n的整数序列D,你的任务是对m个询问作出回答.对于询问(a,b),需要找到两个下标x和y,使得a≤x ...

  5. UVALive - 4108 SKYLINE (吉司机线段树)

    题目链接 题意:在一条直线上依次建造n座建筑物,每座建筑物建造完成后询问它在多长的部分是最高的. 比较好想的方法是用线段树分别维护每个区间的最小值mi和最大值mx,当建造一座高度为x的建筑物时,若mi ...

  6. 数据结构习题 线段树&树状数组

    说明:这是去年写了一半的东西,一直存在草稿箱里,今天整理东西的时候才发现,还是把它发表出来吧.. 以下所有题目来自Lrj的<训练指南> LA 2191 单点修改,区间和  Fenwick直 ...

  7. 【BZOJ-2325】道馆之战 树链剖分 + 线段树

    2325: [ZJOI2011]道馆之战 Time Limit: 40 Sec  Memory Limit: 256 MBSubmit: 1153  Solved: 421[Submit][Statu ...

  8. UVA 11992 Fast Matrix Operations (二维线段树)

    解法:因为至多20行,所以至多建20棵线段树,每行建一个.具体实现如下,有些复杂,慢慢看吧. #include <iostream> #include <cstdio> #in ...

  9. Mango DS Training #48 ---线段树2 解题手记

    Training address: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=38966#overview A.Count Color ...

  10. HDU-3872 Dragon Ball 线段树+DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3872 题意:有n个龙珠按顺序放在一列,每个龙珠有一个type和一个权值,要求你把这n个龙珠分成k个段, ...

随机推荐

  1. 复杂sql查询语句

    视图也叫虚表 1.表中保存实际数据,视图保存从表中取出数据所使用的SELECT语句,视图也是一张表,之间区别是是否保存实际数据. 2.使用视图可以完成跨多表查询数据.可以将常用SELECT语句做成视图 ...

  2. Elasticsearch入门实践

    官网:https://www.elastic.co/ 下载:https://www.elastic.co/downloads/elasticsearch 文档:https://www.elastic. ...

  3. Web服务常见问题

    1. 资源无法找到 ,用58225端口发布服务的时候,没法找到 那么就换一个端口试试.http://localhost:58272/ 2. could not load file or assembl ...

  4. SqlExpress与 LocalDB的链接字符串转换

    1.如果是连接SQL Server Express databases,需要将连接字符串定义为:Data Source=.SQLEXPRESS" to "Data Source=( ...

  5. Sql显示16进制

    select cast(id as varbinary(4)) from tableTest

  6. 1.关于Java

    一.Java简介 1.java语言的特性 java语言的重要特性:跨平台: 一次编译,到处运行. 2.java的环境搭建: 1.JRE: java运行环境. JRE = java 虚拟机 + 核心类库 ...

  7. ansible学习笔记一

    ansible学习笔记一 参考博客: ansible学习 - 51CTO博客 一.安装 1 .下载epel源 wget -O /etc/yum.repos.d/epel.repo http://mir ...

  8. ue4 socket

    Socket 地址: TSharedRef<FInternetAddr> internetAddr = ISocketSubsystem::Get(PLATFORM_SOCKETSUBSY ...

  9. Django REST Framework API Guide 04

    本节大纲 1.serializers 1.Serializers Serializers允许复杂的数据,像queryset和模型实例转换成源生的Python数据类型.从而可以更简单的被渲染成JSON, ...

  10. Ajax原生请求和java对象转成json

    \黑马程序员_超全面的JavaWeb视频教程vedio\黑马程序员_超全面的JavaWeb教程-源码笔记\JavaWeb视频教程_day23-资料源码\ajax_code\day23_3 本代码中有模 ...