求助,关于哈希被RE的问题,考虑了下标负数
查看原帖
求助,关于哈希被RE的问题,考虑了下标负数
376467
QDHSLGYYJK楼主2020/11/17 14:58

RT

#include<cstdio>
#include<cstring>
#define f(x) (x%1999537+1999537)%1999537
#define ll long long
using namespace std;
ll t,n,h[2000005],v[500005],nxt[500005],x,len;
int main(){
	scanf("%d",&t);
	while (t--){
		scanf("%d",&n);
		memset(h,0,sizeof(h));
		memset(v,0,sizeof(v));
		memset(nxt,0,sizeof(nxt));
		len=0;
		for (ll i=1;i<=n;++i){
			scanf("%d",&x);
			bool b=0;
			for (ll j=h[f(x)];j;j=nxt[f(x)])
				if (v[j]==x){
					b=1;
					break;
				}
			if (b)
				continue;
			v[++len]=x;
			nxt[len]=h[f(x)];
			h[f(x)]=len;
			printf("%d ",x);
		}
		putchar('\n'); 
	}
	return 0;
}
2020/11/17 14:58
加载中...