标签:
用递推初始化,查找时到O(1)的复杂度。
1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 int v[200005],ans[200005],n; 5 int dfs(int x) 6 { 7 if (x==2*n+2) return 0; 8 if (!v[x]) {dfs(x+1); return ans[x]=x;} 9 return ans[x]=dfs(x+1); 10 } 11 int main() 12 { 13 int t,m,p,i,a; 14 scanf("%d",&t); 15 while (t--) 16 { 17 memset(v,0,sizeof(v)); 18 scanf("%d%d",&n,&m); 19 for (i=1;i<=n;i++) 20 { 21 scanf("%d",&a); 22 v[a]=1; 23 } 24 dfs(1); 25 while (m--) 26 { 27 scanf("%d",&p); 28 printf("%d\n",ans[p]); 29 } 30 } 31 }
标签:
原文地址:http://www.cnblogs.com/pblr/p/4769804.html