HDU 5172 GTY's gay friends(线段树)
来源:互联网 发布:微信群怎么推广淘宝客 编辑:程序博客网 时间:2024/04/20 07:48
题意:给你n个数,有m次询问,每次询问[l,r]的区间内是否为1到r-l+1的全排列。
对于1到r-l+1的全排列,和可以通过一个数组记录前缀和。接下来就是去重,我们可以用线段树储存每个数上一个相同的数的位置,线段树的每个点即为区间内上一个数位置的最大值,若求得的值小于l,即满足条件,输出YES。
#include<stdio.h>#include<queue>#include<cstring>#include<iostream>#include<cmath>#include<algorithm>#include<assert.h>#include<stdlib.h>#include<time.h>#include<stack>#include<vector>#include<map>#include<set>#include<fstream>#define pi acos(-1.0)#define INF 0x3f3f3f3f#define debug printf("---------------\n");using namespace std;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1const int NV = 1000005;int sum[NV<<2];void PushUp(int rt){ sum[rt]=max(sum[rt<<1],sum[rt<<1|1]);}void build(int l,int r,int rt=1){ if (l == r) { sum[rt]=0; return ; } int m = (l + r) >> 1; build(lson); build(rson); PushUp(rt);}void update(int L,int c,int l,int r,int rt=1){ if (L == l && l == r) { sum[rt] += c; return ; } int m = (l + r) >> 1; if (L <= m) update(L , c , lson); else update(L , c , rson); PushUp(rt);}int query(int L,int R,int l,int r,int rt=1){ if (L <= l && r <= R) return sum[rt]; int m = (l + r) >> 1; int ret = 0; if (L <= m) ret =max(ret, query(L , R , lson)); if (m < R) ret =max(ret, query(L , R , rson)); return ret;}int last[NV];long long suma[NV];int main(){ //freopen("input.txt", "r", stdin); //freopen("output.txt", "w", stdout); int n,m,a,b; while(scanf("%d%d",&n,&m)!=EOF) { memset(suma,0,sizeof(suma)); memset(last,0,sizeof(last)); build(1,n); for(int i=1;i<=n;i++) { scanf("%d",&a); suma[i]=suma[i-1]+(long long)a; if(last[a]) { update(i,last[a],1,n); } last[a]=i; } for(int i=1;i<=m;i++) { scanf("%d%d",&a,&b); long long len=b-a+1; //printf("a=%d b=%d query=%d suma[b,a]=%d %d\n",a,b,query(a,b,1,n),suma[b],suma[a-1]); if(((suma[b]-suma[a-1])==(1+len)*len/2)&&(query(a,b,1,n)<a)) { printf("YES\n"); } else { printf("NO\n"); } } } return 0;}
0 0
- HDU 5172 GTY's gay friends(线段树)
- HDU 5172 GTY's gay friends (预处理+线段树)
- HDU 5172 GTY's gay friends(线段树)
- hdu 5172 GTY's gay friends 线段树
- HDU 5172 - GTY's gay friends (线段树)
- hdu 5172 GTY's gay friends (线段树||hash)
- HDU 5172 GTY's gay friends (线段树)
- HDU-5172-GTY's gay friends-线段树单点更新
- HDOJ 题目5172 GTY's gay friends(线段树)
- hdu 5172 GTY's gay friends(线段树+前缀和)
- hdu 5172 GTY's gay friends 线段树 (未敲)
- Hdu 5172 GTY's gay friends
- hdu 5172 GTY's gay friends
- HDU 5172 GTY's gay friends
- HDU 5172 GTY's gay friends
- HDU 5172 GTY's gay friends 线段树(排列,区间不同的数)
- hdu 5172 GTY's gay friends (区间最值)
- HDU 5172 GTY's gay friends(HASH 随机算法)
- 剑指Offer--复杂链表的复制
- UILabel高度自适应
- C/C++用动态链表实现对学生信息的存储
- 软件项目管理有感
- poj 3272 Cow Traffic dag上的dp
- HDU 5172 GTY's gay friends(线段树)
- MATLAB数字图像处理(三)空间滤波
- 动画一些常用的方法记录
- HDU 1875 畅通工程再续(Prime,注意数据格式啊,老是在这方面出错)
- 断点续传原理
- activity的四种跳转模式
- 汉诺塔
- for循环的嵌套问题
- vim的几种模式和按键映射