题目链接 HDU4907
【分析】 比赛的时候忘记考虑查询点大于给出点的情况了,然后竟然也过了小数据,结果后来大数据WA了,再过来看马上发现错误了(相当郁闷啊);
其实这题就是DP的记录一下每个点右边最近的没有任务的点,后来的询问应该题目说了询问之间没有关联,所以不需要更新了(记得最近做了好题这种类型的,上次百度之星的初赛(HDU4831)也有比这个难一点的需要更新的,郁闷啊),惨痛的教训)
【AC CODE】187ms
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define MAXN 100010
bool vis[2 * MAXN];
int dp[2 * MAXN];
int main()
{
#ifdef SHY
freopen("e:\\1.txt", "r", stdin);
#endif
int t;
scanf("%d%*c", &t);
while(t--)
{
int n, m, a, maxn = 0, p;
scanf("%d %d%*c", &n, &m);
memset(vis, 0, sizeof(vis));
for(int i = 0; i < n; i++)
{
scanf("%d%*c", &a);
vis[a] = true;
if(maxn < a) maxn = a;
}
p = maxn + 1;
for(int i = maxn; i >= 1; i--)
{
if(!vis[i])
p = i;
dp[i] = p;
}
for(int i = 0; i < m; i++)
{
scanf("%d%*c", &a);
if(vis[a])
printf("%d\n", dp[a]);
else printf("%d\n", a);
}
}
return 0;
}