Hdu 4907
题目链接:点击打开链接
第一遍的时候AC了感觉自己萌萌哒。。结果最后判的时候TLE。在HACK的时候看到别人的代码里有优化顿时恍然大悟,还是需要预处理的。。。果然还是太年轻了。。后来在群里讨论的时候有人说是哈希表,其实还是挺容易的。早上一遍敲完了。
#include<stdio.h>
#include<string.h>
bool flag[400005];
int ans[400005];
int main()
{
int t,n,m;
int max;
int c;
int temp;
while(scanf("%d",&t)!=EOF)
{
while(t--)
{
memset(flag,0,sizeof(flag));
scanf("%d%d",&n,&m);
int i;
max=0;
for(i=0;i<n;++i)
{
scanf("%d",&c);
flag[c]=1;
if(c>max)
max=c;
}
temp=max+1;
for(i=max;i>0;--i)
{
if(!flag[i])
temp=i;
ans[i]=temp;
}
for(i=0;i<m;++i)
{
scanf("%d",&c);
if(c>max)
printf("%d\n",c);
else
printf("%d\n",ans[c]);
}
}
}
return 0;
}