hdu 5172 GTY's gay friends(线段树最值)
题意:
GTY有n个朋友,站成一排,每个人有一个特征值ai。
有m个询问。每次询问给两个数L,R。问你[L,R](即aL...aR)是否是1..(R-L+1)的一个全排列。
是输出YES,否则输出NO
思路:
先判断是否segma(a[L,R])是否等于(R-L)*(R-L+1)/2。
记录每一个ai上一次的位置pre[i]。
这样只要判断a[L]...a[R]中的每一个pre[i]是否都小于L即可。(这个方法太妙)
线段树区间求最大值。
*用map效率明显下降。
代码:
int const N = 1000005; int n,m; int a[N]; ll sum[N]; int pre[N]; int F[N<<4]; int lastPos[N];void PushUp(int rt){F[rt]=max( F[rt<<1],F[rt<<1|1] ); } void build(int l,int r,int rt){if(l==r){F[rt]=pre[l];return;}int m=(l+r)>>1;build(lson);build(rson);PushUp(rt); } int query(int L,int R,int l,int r,int rt){if(L<=l && r<=R){return F[rt];}int m=(l+r)>>1;int ret=0;if(L<=m) ret=max( ret,query(L,R,lson) );if(R>m) ret=max( ret,query(L,R,rson) );return ret; }int main(){while(scanf("%d%d",&n,&m)!=EOF){sum[0]=0;rep(i,1,n){scanf("%d",&a[i]);sum[i]=sum[i-1]+a[i];}mem(lastPos,0);rep(i,1,n){pre[i]=lastPos[a[i]];lastPos[a[i]]=i;}build(1,n,1);while(m--){int L,R;scanf("%d%d",&L,&R);ll temp=(ll)1*(R-L+2)*(R-L+1)/2;if( ((sum[R]-sum[L-1])==temp)&&query(L,R,1,n,1)<L ){puts("YES");}else{puts("NO");}}}return 0; }
转载于:https://www.cnblogs.com/fish7/p/4309815.html
hdu 5172 GTY's gay friends(线段树最值)相关推荐
- HDU 5172 GTY's gay friends 线段树
GTY's gay friends Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- HDU 5172 GTY's gay friends 线段树+前缀和+全排列
题目链接: hdu: http://acm.hdu.edu.cn/showproblem.php?pid=5172 bc(中文): http://bestcoder.hdu.edu.cn/contes ...
- BestCoder Round #29 1003 (hdu 5172) GTY's gay friends [线段树 判不同 预处理 好题]
传送门 GTY's gay friends Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Ot ...
- HDU 5172 GTY's gay friends (线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5172 题意: 给你一个n个数的数组,m次询问,询问在[L, R] 这个区间里面有没有 [1, R-L+ ...
- HDU 5172 GTY's gay friends HASH随机算法
传送门:点击打开链接 GTY's gay friends Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K ( ...
- GTY‘s gay friends 线段树+前缀和
链接 题意:n个数,m次询问,每次询问判断一个区间是否为一个序列 解法: 判断长度为x的序列只要满足两个条件: 1.区间和为(1+x)*x/2 2.1~x每个数只出现一次: 对于第一个限制前缀和求区 ...
- Hdu 5172 GTY's gay friends
题目链接:点击打开链接 题目大意就是,给一段序列,长度为10^5,然后有10^5个询问,每次询问为一个区间,l为左边界,r为右边界,该区间是否为一个1到r-l+1的一个排列,即该区间是否满足包含1到r ...
- HDU - 5172 GTY's gay friends
题目链接 题意:n个数m个查询,问[l,r]中的数是否为1到r-l+1的一个排列. 做法1: hash一下,对于[1...n],每个数都随机分配一个hash值,一个集合的hash值为元素异或和.预处理 ...
- HDU - 1255 覆盖的面积(线段树求矩形面积交 扫描线+离散化)
链接:线段树求矩形面积并 扫描线+离散化 1.给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积. 2.看完线段树求矩形面积并 的方法后,再看这题,求的是矩形面积交,类同. 求面积时,用被覆 ...
最新文章
- 使用Spring+CXF开发WebService
- Samba常用配置及GUEST访问
- Asp.net页面间传值方式汇总
- MySQL中B-tree索引和Hash索引区别
- 【文末有福利】生成对抗网络
- range作用于对象global失败_彻底弄懂JavaScript作用域问题
- DelphiXE下的字符串变化
- Xampp PHPStorm XDebug配置
- pl/sql 过程分页显示小案例
- Linux 常用软件分类
- 有关错误:buffer i/o error on device fd0,logical block 0
- 百词斩不复习_有人用过百词斩和不背单词两款背单词app吗?良心推荐哪一个好一点?...
- DSP内核结构中的 D L S M
- Codeforces Round #460 (Div. 2) C	 Seat Arrangements
- ceph学习之路----OSD DNE状态处理
- windows7计算机测试,WinSAT 测试在 Windows 7 中失败
- Unity 3D模型展示之webGL平台展现
- 全屏的微粒子3D动画特效
- FTP客户端--实现FTP文件的上传下载功能
- web页面设计中使用阿里字体(包含图标)
热门文章
- 数据集蒸馏 by Matching Training Trajectories
- CVPR 2020 论文大盘点-超分辨率篇
- 科技部发文:破除“唯论文”不良导向!网友:靠水论文拿奖励的人不开心了...
- 收藏!李飞飞老师《注意力与Transformer》总结,84页ppt开放下载!
- 计算机视觉论文-2021-06-18
- 南京大学开源!ResT:高效Transformer架构!
- 浅谈Time Elastic Band
- android6要多大运存,内存多大手机才能不卡? 现在终于有了答案
- 复练-面试的科技树-企业人才需求和招聘流程
- vue 新建的页面如何访问_Vue.js—实现前后端分离架构中前端页面搭建(四)(完)...