您的位置:首页 > 其它

ural 1613

2012-09-08 10:32 92 查看
题目:http://acm.timus.ru/problem.aspx?space=1&num=1613

题意:给出N 个数,然后给出询问区间,并给出询问的数,问这个数是不是存在

hash还是很好想的,然后如果再能想到优化,就没问题了

View Code

typedef long long ll;
const int N = 100008;
const int mod = 100007;
struct node
{
int data;
int id;
};
vector<node>mark
;
int a
;
int main()
{
int i;
int n,q;
int s,e,x;
node tem;
//freopen("data.txt","r",stdin);
while(scanf("%d",&n) != EOF)
{
for(i = 1; i <= n; i++)
{
scanf("%d",&x);
a[i] = x;  // 预存这些数
tem.data = x;
tem.id = i;
mark[x % mod].push_back(tem);
}
scanf("%d",&q);
while(q--)
{
scanf("%d%d%d",&s,&e,&x);
//cout<<"a[x] = "<<a[s]<<endl;
if(a[s] == x || a[e] == x)  // 首先判断一下,就是这个优化,如果不加就是 TLE 了
{
printf("1");
continue;
}
int flag = 0;
int temp = x % mod;
int kem = mark[temp].size();
for(i = 0; i < kem; i ++)
{
if(mark[temp][i].data == x && mark[temp][i].id >= s && mark[temp][i].id <= e)
{
flag = 1; break;
}
}
if(flag) printf("1");
else printf("0");
}
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: