求助,WA后四个点
查看原帖
求助,WA后四个点
523585
silent_ST楼主2023/12/22 19:14

rt,哈希。

#include <iostream>
#include <cstdio>
#include <string.h>
#define int long long
using namespace std;
int T, n;
const int SIZE = 50010;
const long long M = 999997;
struct Node {
	int next, key;
} data[SIZE];
int f(int key) {
	return (key % M + M) % M;
}
int head[M], size;
bool add(int key, int value) {
	for(int p = head[f(key)]; p; p = data[p].next)
		if(data[p].key == key) return false;
	data[++size] = (Node) {head[f(key)], key};
	head[f(key)] = size;
	return true;
}
signed main() {
	scanf("%lld", &T);
	while(T--) {
		size = 0;
		scanf("%lld", &n);
		for(int i = 0; i < SIZE; i++) data[i].key = 0;
		memset(head, 0, sizeof(head));
		for(int i = 1; i <= n; i++) {
			long long t;
			scanf("%lld", &t);
			if(add(f(t), t)){
				printf("%lld ", t);
			}
		}
		cout << endl;
	}
	return 0;
}

本人目前不在线,可能无法及时回复

2023/12/22 19:14
加载中...