题目:
这题的思路就是哈希,利用vector和取模来解决冲突问题。然后找。
代码如下:
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <queue>
#include <map>
#include <set>
#include<algorithm>
using namespace std;
int a[710000];
struct node
{
int x, num;
};
vector <node> vec[110000];
const int mod=1e5+7;
int main()
{
int n, q, i, j, y, l, r, x;
scanf("%d",&n);
node tmp;
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
tmp.x=a[i];
tmp.num=i;
vec[a[i]%mod].push_back(tmp);
}
scanf("%d",&q);
while(q--)
{
scanf("%d%d%d",&l, &r, &x);
if(a[l]==x||a[r]==x)
{
printf("1");
continue ;
}
int len=vec[x%mod].size(), flag=0;
for(i=0;i<len;i++)
{
if(vec[x%mod][i].x==x&&vec[x%mod][i].num>=l&&vec[x%mod][i].num<=r)
{
flag=1;
break;
}
}
if(flag)
{
printf("1");
}
else
printf("0");
}
printf("\n");
return 0;
}