题意:

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(线段树最值)相关推荐

  1. HDU 5172 GTY's gay friends 线段树

    GTY's gay friends Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others ...

  2. HDU 5172 GTY's gay friends 线段树+前缀和+全排列

    题目链接: hdu: http://acm.hdu.edu.cn/showproblem.php?pid=5172 bc(中文): http://bestcoder.hdu.edu.cn/contes ...

  3. 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 ...

  4. HDU 5172 GTY's gay friends (线段树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5172 题意: 给你一个n个数的数组,m次询问,询问在[L, R] 这个区间里面有没有 [1, R-L+ ...

  5. HDU 5172 GTY's gay friends HASH随机算法

    传送门:点击打开链接 GTY's gay friends Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K ( ...

  6. GTY‘s gay friends 线段树+前缀和

    链接 题意:n个数,m次询问,每次询问判断一个区间是否为一个序列 解法: 判断长度为x的序列只要满足两个条件: 1.区间和为(1+x)*x/2  2.1~x每个数只出现一次: 对于第一个限制前缀和求区 ...

  7. Hdu 5172 GTY's gay friends

    题目链接:点击打开链接 题目大意就是,给一段序列,长度为10^5,然后有10^5个询问,每次询问为一个区间,l为左边界,r为右边界,该区间是否为一个1到r-l+1的一个排列,即该区间是否满足包含1到r ...

  8. HDU - 5172 GTY's gay friends

    题目链接 题意:n个数m个查询,问[l,r]中的数是否为1到r-l+1的一个排列. 做法1: hash一下,对于[1...n],每个数都随机分配一个hash值,一个集合的hash值为元素异或和.预处理 ...

  9. HDU - 1255 覆盖的面积(线段树求矩形面积交 扫描线+离散化)

    链接:线段树求矩形面积并 扫描线+离散化 1.给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积. 2.看完线段树求矩形面积并 的方法后,再看这题,求的是矩形面积交,类同. 求面积时,用被覆 ...

最新文章

  1. 使用Spring+CXF开发WebService
  2. Samba常用配置及GUEST访问
  3. Asp.net页面间传值方式汇总
  4. MySQL中B-tree索引和Hash索引区别
  5. 【文末有福利】生成对抗网络
  6. range作用于对象global失败_彻底弄懂JavaScript作用域问题
  7. DelphiXE下的字符串变化
  8. Xampp PHPStorm XDebug配置
  9. pl/sql 过程分页显示小案例
  10. Linux 常用软件分类
  11. 有关错误:buffer i/o error on device fd0,logical block 0
  12. 百词斩不复习_有人用过百词斩和不背单词两款背单词app吗?良心推荐哪一个好一点?...
  13. DSP内核结构中的 D L S M
  14. Codeforces Round #460 (Div. 2) C Seat Arrangements
  15. ceph学习之路----OSD DNE状态处理
  16. windows7计算机测试,WinSAT 测试在 Windows 7 中失败
  17. Unity 3D模型展示之webGL平台展现
  18. 全屏的微粒子3D动画特效
  19. FTP客户端--实现FTP文件的上传下载功能
  20. web页面设计中使用阿里字体(包含图标)

热门文章

  1. 数据集蒸馏 by Matching Training Trajectories
  2. CVPR 2020 论文大盘点-超分辨率篇
  3. 科技部发文:破除“唯论文”不良导向!网友:靠水论文拿奖励的人不开心了...
  4. 收藏!李飞飞老师《注意力与Transformer》总结,84页ppt开放下载!
  5. 计算机视觉论文-2021-06-18
  6. 南京大学开源!ResT:高效Transformer架构!
  7. 浅谈Time Elastic Band
  8. android6要多大运存,内存多大手机才能不卡? 现在终于有了答案
  9. 复练-面试的科技树-企业人才需求和招聘流程
  10. vue 新建的页面如何访问_Vue.js—实现前后端分离架构中前端页面搭建(四)(完)...