【线段树区间最值单点更新模板】BNUOJ 52965 E Excellent Engineers
http://acm.bnu.edu.cn/v3/external/gym/101512.pdf
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define N 100010
#define ls(p) (p<<1)
#define rs(p) (p<<1|1)
const int INF=1e9;
struct node
{
int a,b,c;
} p[N];
struct segment
{
int l,r,min;
} t[N<<];
int n;
bool cmpa(const node &p,const node &q)
{
return p.a<q.a;
}
void build(int p,int l,int r)
{
t[p].l=l;t[p].r=r;
t[p].min=INF;
if(l==r)
return ;
int mid=l+r>>;
build(ls(p),l,mid);
build(rs(p),mid+,r);
}
int ask(int p,int l,int r)
{
if(l<=t[p].l && t[p].r<=r)
return t[p].min;
int mid=(t[p].l+t[p].r)>>;
int ans=INF;
if(l<=mid) ans=min(ans,ask(ls(p),l,r));
if(mid<r) ans=min(ans,ask(rs(p),l,r));
return ans;
}
void change(int p,int x,int y)
{
if(t[p].l==t[p].r)
{
t[p].min=min(t[p].min,y);
return;
}
int mid=(t[p].l+t[p].r)>>;
if(x<=mid) change(ls(p),x,y);
else change(rs(p),x,y);
t[p].min=min(t[ls(p)].min,t[rs(p)].min);
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(int i=;i<=n;++i)
{
scanf("%d%d%d",&p[i].a,&p[i].b,&p[i].c);
}
sort(p+,p+n+,cmpa);
build(,,n);
int ans=;
for(int i=;i<=n;++i)
{
if(ask(,,p[i].b)>p[i].c) ++ans;
change(,p[i].b,p[i].c);
}
printf("%d\n",ans);
}
}
【线段树区间最值单点更新模板】BNUOJ 52965 E Excellent Engineers的更多相关文章
- HUD.2795 Billboard ( 线段树 区间最值 单点更新 单点查询 建树技巧)
HUD.2795 Billboard ( 线段树 区间最值 单点更新 单点查询 建树技巧) 题意分析 题目大意:一个h*w的公告牌,要在其上贴公告. 输入的是1*wi的w值,这些是公告的尺寸. 贴公告 ...
- 51nod1287(二分/线段树区间最值&单点更新)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1287 题意:中文题诶- 解法1:b[i] 存储 max(a[0 ...
- hdoj1754 I Hate It【线段树区间最大值维护+单点更新】
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- 【bzoj4695】最假女选手 线段树区间最值操作
题目描述 给定一个长度为 N 序列,编号从 1 到 N .要求支持下面几种操作:1.给一个区间[L,R] 加上一个数x 2.把一个区间[L,R] 里小于x 的数变成x 3.把一个区间[L,R] 里大于 ...
- 【bzoj4355】Play with sequence 线段树区间最值操作
题目描述 维护一个长度为N的序列a,现在有三种操作: 1)给出参数U,V,C,将a[U],a[U+1],...,a[V-1],a[V]都赋值为C. 2)给出参数U,V,C,对于区间[U,V]里的每个数 ...
- 【hdu5306】Gorgeous Sequence 线段树区间最值操作
题目描述 给你一个序列,支持三种操作: $0\ x\ y\ t$ :将 $[x,y]$ 内大于 $t$ 的数变为 $t$ :$1\ x\ y$ :求 $[x,y]$ 内所有数的最大值:$2\ x\ y ...
- cf834D(dp+线段树区间最值,区间更新)
题目链接: http://codeforces.com/contest/834/problem/D 题意: 每个数字代表一种颜色, 一个区间的美丽度为其中颜色的种数, 给出一个有 n 个元素的数组, ...
- HDU 4819 Mosaic (二维线段树&区间最值)题解
思路: 二维线段树模板题,马克一下,以后当模板用 代码: #include<cstdio> #include<cmath> #include<cstring> #i ...
- HDU-1754I Hate It 线段树区间最值
这道题比较基本,就是用线段树维护区间最值,可以算是模板吧-.. I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768 ...
随机推荐
- 洛谷 P2292 [HNOI2004]L语言
题目描述 标点符号的出现晚于文字的出现,所以以前的语言都是没有标点的.现在你要处理的就是一段没有标点的文章. 一段文章T是由若干小写字母构成.一个单词W也是由若干小写字母构成.一个字典D是若干个单词的 ...
- tomcat配置 —— 各个目录的作用
tomcat各目录(文件)作用 tomcat-7.0.50解压版,主目录一览: 我们可以看到主目录下有bin,conf,lib,logs,temp,webapps,work 7个文件夹,下面对他们分别 ...
- 用 Deployment 运行应用【转】
从本章开始,我们将通过实践深入学习 Kubernetes 的各种特性.作为容器编排引擎,最重要也是最基本的功能当然是运行容器化应用,这就是本章的内容. Deployment 前面我们已经了解到,Kub ...
- Robot Framework(十一) 执行测试用例——后处理输出
3.3后处理输出 在测试执行期间生成的XML输出文件可以在之后由rebot工具进行后处理,该工具是Robot Framework的组成部分.在测试执行期间生成测试报告和日志时会自动使用它,但在执行后也 ...
- 火狐浏览器返回不加载JS
火狐浏览器 go(-1),返回后不加载JS,谷歌会加载. 总结: Firefox和Safari在back时不会触发load, ready事件! 解决方法: $(window).unload(funct ...
- Mac 下 Android Studio 安装
给大家介绍下 Mac Os 系统下的 Android Studio 的安装吧,二者步骤类似. 方法/步骤 1 首先下载 Mac 环境下的 Android Studio 的安装包,为 dmg 格式的 ...
- Bootstrap历练实例:垂直的按钮组
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- Git学习——创建本地仓库、提交文件
创建Git仓库 新建或找一个存在的文件夹,在命令行进入该文件夹,输入命令 git init 添加文件到Git仓库 首先使用命令git add <file>,可以多次添加文件: 使用命令gi ...
- python-小数据池,再谈编码,is和 == 的区别
一 . 小数据池 # 小数据池针对的是: int, str, bool 在py文件中几乎所有的字符串都会缓存. # id() 查看变量的内存地址 s = 'attila' print(id(s)) 二 ...
- 收集自网络上有关Kali的各种源
更新源总结 #更新源 gedit /etc/apt/sources.list #中科大kali源 deb http://mirrors.ustc.edu.cn/kali kali-rollin ...