BUAA 724 晴天小猪的神题(RMQ线段树)
BUAA 724 晴天小猪的神题
题意:中文题,略
题目链接:http://acm.buaa.edu.cn/problem/724/
思路:对于询问x,y是否在同一区间,可以转换成有没有存在一个区间它的左端点小于等于x,右端点大于等于y
即小于等于x的所有区间的右端点的最大值是否大于y!这就转换成了区间最值问题,可以用线段树动态维护左端点即可
(x,y太大,可先离散化)
# include<cstdio>
# include<cstring>
# include<map>
# include<algorithm>
using namespace std; typedef pair<int,int> PII;
# define lson l,m,rt<<
# define rson m+,r,rt<<|
# define F first
# define S second
# define N
pair<int,PII> q[N]; int Max[N<<];
int Hash[N]; void PushUp(int rt)
{
Max[rt]=max(Max[rt<<],Max[rt<<|]);
} void Update(int pos,int x,int l,int r,int rt)
{
int m;
if(l==r)
{
Max[rt]=max(Max[rt],x);
return;
}
m=(l+r)>>;
if(pos<=m) Update(pos,x,lson);
else Update(pos,x,rson);
PushUp(rt);
} //查询[L,R]内的最大值
int Query(int L,int R,int l,int r,int rt)
{
int m,ans=;
if(L<=l&&R>=r)
return Max[rt];
m=(l+r)>>;
if(L<=m) ans=max(ans,Query(L,R,lson));
if(R>m) ans=max(ans,Query(L,R,rson));
return ans;
} int bin(int l,int r,int x)
{
int m;
while(l<=r)
{
m=(l+r)>>;
if(Hash[m]<x) l=m+;
else r=m-;
}
return l;
} int main()
{
int T,i,n,x,y,num,Count,L,R;
scanf("%d",&T);
while(T--)
{
Count=;
scanf("%d",&n);
for(i=;i<=n;i++)
{
scanf("%d%d%d",&q[i].F,&q[i].S.F,&q[i].S.S);
Hash[++Count]=q[i].S.F;
Hash[++Count]=q[i].S.S;
}
sort(Hash+,Hash+Count+);
num=;
for(i=;i<=Count;i++)
if(Hash[i]!=Hash[i-])
Hash[++num]=Hash[i];
memset(Max,,sizeof(Max));
for(i=;i<=n;i++)
{
L=bin(,num,q[i].S.F);
R=bin(,num,q[i].S.S);
if(q[i].F==) Update(L,R,,num,);
else
{
if(L>R) swap(L,R);
if(Query(,L,,num,)>=R)
printf("YES\n");
else
printf("NO\n");
}
}
}
return ;
}
BUAA 724
BUAA 724 晴天小猪的神题(RMQ线段树)的更多相关文章
- NBU 2475 Survivors(RMQ线段树)
NBU 2475Survivors 题目链接:http://acm.nbu.edu.cn/v1.0/Problems/Problem.php?pid=2475 题意:给定n个人,每个人有strengt ...
- Codeforces Round #305 (Div. 2) D题 (线段树+RMQ)
D. Mike and Feet time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
- ACM学习历程—HDU5696 区间的价值(分治 && RMQ && 线段树 && 动态规划)
http://acm.hdu.edu.cn/showproblem.php?pid=5696 这是这次百度之星初赛2B的第一题,但是由于正好打省赛,于是便错过了.加上2A的时候差了一题,当时有思路,但 ...
- poj2763(lca / RMQ + 线段树)
题目链接: http://poj.org/problem?id=2763 题意: 第一行输入 n, q, s 分别为树的顶点个数, 询问/修改个数, 初始位置. 接下来 n - 1 行形如 x, y, ...
- CSU1553 Good subsequence —— 二分 + RMQ/线段树
题目链接: http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1553 Description Give you a sequence of n n ...
- UESTC 764 失落的圣诞节 --RMQ/线段树
题意:n种物品,每种物品对不同的人都有不同的价值,有三个人选,第一个为普通学生,第二个是集,第三个是祈,集和祈可以选一样的,并且还会获得加分,集和祈选的普通学生都不能选,问三个人怎样选才能使总分最高. ...
- [RMQ] [线段树] POJ 3368 Frequent Values
一句话,多次查询区间的众数的次数 注意多组数据!!!! RMQ方法: 预处理 i 及其之前相同的数的个数 再倒着预处理出 i 到不是与 a[i] 相等的位置之前的一个位置, 查询时分成相同的一段和不同 ...
- VJ16216/RMQ/线段树单点更新
题目链接 /* 单点更新,用RMQ维护最大值,add对c[i]修改,或加,或减. 求[l,r]的和,用sum(r)-sum(l-1).即可. */ #include<cmath> #inc ...
- 51Nod.1766.树上最远点对(树的直径 RMQ 线段树/ST表)
题目链接 \(Description\) 给定一棵树.每次询问给定\(a\sim b,c\sim d\)两个下标区间,从这两个区间中各取一个点,使得这两个点距离最远.输出最远距离. \(n,q\leq ...
随机推荐
- C语言知识整理(1):简介
由于项目要求,需要学习iOS移动端开发.iOS开发的核心语言是Objective-C,Objective-C是在C语言的基础加了一层面向对象的语法.为了能够更好地掌握Objective-C,故先学习C ...
- 关于时间序列数据库的思考——(1)运用hash文件(例如:RRD,Whisper) (2)运用LSM树来备份(例如:LevelDB,RocksDB,Cassandra) (3)运用B-树排序和k/v存储(例如:BoltDB,LMDB)
转自:http://0351slc.com/portal.php?mod=view&aid=12 近期网络上呈现了有关catena.benchmarking boltdb等时刻序列存储办法的介 ...
- Java面试题(1)- 高级特性
1. The diffrence between java.lang.StringBuffer and java.lang.StringBuilder? java.lang.StringBuffer: ...
- FZU 2216 The Longest Straight 模拟
题目链接:The Longest Straight 就是一个模拟就是这样,T_T然而当时恶心的敲了好久,敲完就WA了,竟然有这么简单的方法,真是感动哭了.......xintengziji...zhi ...
- Codeigniter 集成sphinx搜索 这里采用的是coreseek中文搜索引擎,具体安装请参考官方网站
先上效果图 加入sphinx类库(/application/libraries/sphinx_client.php) 0001 <?php 0002 0003 // 0004 // $Id: s ...
- 四种java代码静态检查工具
[转载]常用 Java 静态代码分析工具的分析与比较 转载自 开源中国社区 http://www.oschina.net/question/129540_23043 1月16日厦门 OSC ...
- EntityFramework之创建数据库及基本操作(一)
那时学EF的时候还没有Code First,只有DB First,生成的是一个EDMX文件,Code First则没有这文件,下面直接上代码吧 数据库创建以及建表 1.首先我们新建一个新项目,使用Nu ...
- IT公司100题-15-求二元查找树的镜像
问题描述: 输入一颗二元查找树,将该树转换为它的镜像树,即对每一个节点,互换左右子树. 例如输入: 6/ \4 12/ \ / \2 5 8 16 输出: 6/ ...
- 操作无效:已关闭 Lob。 ERRORCODE=-4470, SQLSTATE=null
解决方式: 1.jdbc URL链接为:jdbc.url=jdbc:db2://(ip):50000/(数据库名称):driverType=4;fullyMaterializeLobData=true ...
- Maven 玩 github上的项目
第一步,使用maven创建了一个项目"helloworld",cmd命令如下: @echo offecho [INFO] Generating project in ./gener ...