链接

题意:n个数,m次询问,每次询问判断一个区间是否为一个序列

解法:

判断长度为x的序列只要满足两个条件: 1.区间和为(1+x)*x/2  2.1~x每个数只出现一次;

对于第一个限制前缀和求区间和即可

第二个限制可以用一个nt[]数组,存每个数y右边最近的一个相同数y的位置,用线段树维护nt[]数组,只要每次查询区间内的最小值大于r即表示每个数只出现了一次

#include<bits/stdc++.h>
#define ls o*2
#define rs o*2+1
#define mid (l+r)/2
#define ll long long
using namespace std;
int n,m;
int nt[1000006];
int tree[4000056];
ll sum[1000006] ;
int a[1000006];
int mp[1000006];
void up(int o,int l,int r,int p,int v)
{if(l==r){tree[o]=v;return ;}if(p<=mid){up(ls,l,mid,p,v);}else up(rs,mid+1,r,p,v);tree[o]=min(tree[ls],tree[rs]);
}int qu(int o,int l,int r,int ql,int qr)
{if(ql<=l&&r<=qr){return tree[o];}int mi=1e9;if(ql<=mid) mi=min(mi,qu(ls,l,mid,ql,qr));if(mid<qr) mi= min(mi,qu(rs,mid+1,r,ql,qr));return mi;
}
int main()
{while(scanf("%d%d",&n,&m)!=EOF){memset(tree,0,sizeof(tree));for(int i=1;i<=n;i++){scanf("%d",&a[i]);mp[a[i]]=0;}for(int i=n;i>=1;i--){if(mp[a[i]]==0) nt[i]=1e9;else{nt[i]=mp[a[i]];}up(1,1,n,i,nt[i]);mp[a[i]]=i;}sum[0]=0;for(int i=1;i<=n;i++){sum[i]=a[i]+sum[i-1];}for(int i=0;i<m;i++){int l,r;scanf("%d%d",&l,&r);ll len=(r-l+1);if(sum[r]-sum[l-1]==(1+len)*len/2){if(qu(1,1,n,l,r)>r) puts("YES");else puts("NO");}else puts("NO");}}
}

GTY‘s gay friends 线段树+前缀和相关推荐

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

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

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

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

  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. P1714 切蛋糕(线段树+前缀和)

    P1714 切蛋糕 解题思路:求连续区间不超过k的最大值.先求出前缀和,线段树维护前缀和,在一个长度为k的区间,找到前缀和最小的,用最后的值减去这个值,得到的就是在这个区间里的最大值.如果长度不能到达 ...

  5. hdu 5172 GTY's gay friends(线段树最值)

    题意: GTY有n个朋友,站成一排,每个人有一个特征值ai. 有m个询问.每次询问给两个数L,R.问你[L,R](即aL...aR)是否是1..(R-L+1)的一个全排列. 是输出YES,否则输出NO ...

  6. 【线段树】L - GTY‘s gay friends

    题面 http://acm.hdu.edu.cn/showproblem.php?pid=5172 题意 给你n个数,m次查询,每次询问一个区间[l,r],问这个区间[l,r]是否满足[l,r]之间的 ...

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

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

  8. 线段树 ---- CF1004F Sonya and Bitwise OR(线段树上分治合并区间信息 + or 前缀和的log性质)

    题目链接 题目大意: 解题思路: 考虑只有一次询问时怎么做. 分治.每次考虑LLL位于左半边,RRR位于右半边的情况(也就是"跨过中点"的答案).再分别递归左.右两边.计算跨过中点 ...

  9. P3924 康娜的线段树(マジやばくね)(线段树、期望、前缀和)难度⭐⭐⭐★

    P3924 康娜的线段树 我觉得挺难的,マ(ma)ジ(ji)や(ya)ば(ba)く(ku)ね(ne)(不得了了)知道康娜的应该都懂 题解 P3924 [康娜的线段树] #include<iost ...

最新文章

  1. 别再和面试官说不懂信号量Semaphore了!
  2. 百万用户规模的系统如何扩展
  3. C++:数字逆向输出
  4. 51CTO‘s Bug?
  5. textAppearance的属性设置
  6. 为什么要使用Mybatis框架?JDBC的缺点有哪些?
  7. java类与对象实验报告心得体会_java实验报告类与对象
  8. Attention Mechanisms in Computer Vision: A Survey论文阅读
  9. mysql和oracle的字符串拼接_Oracle和Mysql中的字符串的拼接
  10. 下列选项中不是具体的python序列类型的是_以下选项中,不是具体的Python序列类型的是...
  11. 你技术这么好,总要改变点什么把!
  12. C++洛谷题解(17)——P5713
  13. 自动机器学习框架介绍与使用(flaml、h2o)
  14. 机器学习_深度学习毕设题目汇总——运动活动动作
  15. VOB视频格式转换器怎么把vob转换为mp3
  16. 常见计算机病毒有些什么症状,电脑中病毒的症状有哪些
  17. git stash '储藏'当前工作状态
  18. 前端vue视频vue-video-player插件总结知识点案例(带源码)
  19. 职场——领导的话你得品,你不走心,就容易走人
  20. Kubernetes PodSecurityPolicy

热门文章

  1. 中国联通再次下调国际漫游资费 最高降幅达90.42%
  2. 用vue写购物车常用的数量增加和减少吧!
  3. .manifest是什么文件
  4. 微信壁纸小程序V1.2.0(自带后台上传图片)
  5. 影响淘宝搜索排名因素大全
  6. Hello Lyq And Xj
  7. GUI,UGUI,NGUI三种编辑UI界面的插件
  8. Laravel实现google-authenticator--Google二维码验证器
  9. 即时通讯云服务免费 破解APP社交化困局
  10. F5在K8S环境下的4、7层应用统一发布