CodeForces 622 C. Not Equal on a Segment(水~)
2016-02-25 19:13
423 查看
Description
给出一个长度为n的序列,m次查询,每次查询询问区间[l,r]中是否存在不等于x的数,如果不存在则输出-1,存在则任意输出区间中任意一个不等于x的值
Input
第一行为两个整数n和m分别表示序列长度和查询次数,第二行为n个整数ai表示该序列,之后m行每行三个整数li,ri,xi表示一次查询(1<=n,m<=2*10^5,1<=ai<=10^6,1<=li<=ri<=n,1<=xi<=10^6)
Output
对于每次查询,如果区间[li,ri]中存在不等于xi的数则任意输出一个,否则输出-1
Sample Input
6 4
1 2 1 1 3 5
1 4 1
2 6 2
3 4 1
3 4 2
Sample Output
2
6
-1
4
Solution
简单题,每次直接暴力枚举会超时,但是如果把数值相同的连续子串合并就可以了
Code
给出一个长度为n的序列,m次查询,每次查询询问区间[l,r]中是否存在不等于x的数,如果不存在则输出-1,存在则任意输出区间中任意一个不等于x的值
Input
第一行为两个整数n和m分别表示序列长度和查询次数,第二行为n个整数ai表示该序列,之后m行每行三个整数li,ri,xi表示一次查询(1<=n,m<=2*10^5,1<=ai<=10^6,1<=li<=ri<=n,1<=xi<=10^6)
Output
对于每次查询,如果区间[li,ri]中存在不等于xi的数则任意输出一个,否则输出-1
Sample Input
6 4
1 2 1 1 3 5
1 4 1
2 6 2
3 4 1
3 4 2
Sample Output
2
6
-1
4
Solution
简单题,每次直接暴力枚举会超时,但是如果把数值相同的连续子串合并就可以了
Code
#include<cstdio> #include<iostream> #include<algorithm> #include<cstring> using namespace std; #define maxn 222222 int n,m,a[maxn],pos[maxn]; struct node { int l,r,v; }p[maxn]; int main() { while(~scanf("%d%d",&n,&m)) { int l,r,x,res; for(int i=1;i<=n;i++) scanf("%d",&a[i]); res=0,l=1; for(;l<=n;l++) { r=l; while(r<=n&&a[l]==a[r])r++; if(r==n+1)r=n; else if(a[l]!=a[r])r--; for(int i=l;i<=r;i++)pos[i]=res; p[res].l=l,p[res].r=r,p[res++].v=a[l]; l=r; } while(m--) { scanf("%d%d%d",&l,&r,&x); int flag=0; for(int i=pos[l];i<res;i++) { if(p[i].r<l)continue; if(p[i].l>r)break; if(p[i].v!=x) { if(p[i].r<=r)printf("%d\n",p[i].r); else if(p[i].l>=l)printf("%d\n",p[i].l); else printf("%d\n",r); flag=1; break; } } if(!flag)printf("-1\n"); } } return 0; }
相关文章推荐
- IQ 域名被删除事件 的前因后果
- 页面定制CSS代码初探(一):页面变宽 文本自动换行 图片按比缩放
- Sql 变量声明
- ganglia
- Spring 4.2.4.RELEASE MVC 学习笔记 - 4 - FreeMarker(咋个办呢 zgbn)
- Exynos4412裸机开发——中断处理
- SetWindowLong
- dom4j解析xml,dom4j创建xml
- GitLab在CentOS7下LNMP环境的安装使用
- linux 库的依赖和链接的顺序
- JSONKit在项目中使用设置(ARC与方法更新)
- 两个整数型,不准用while、if、for、switch等判断语句 求出两者最大值
- GPUImage 简单使用(二)组合滤镜使用
- iOS 从相机或相册获取图片并裁剪
- opengl读取OBJ模型文件
- opengl读取OBJ模型文件
- c++ 关联容器
- hdc和hwnd的区别
- 导航条
- css中锚点剖析 & 血泪教训