只有60分,剩余的TLE了
查看原帖
只有60分,剩余的TLE了
241817
Chancylaser楼主2021/4/27 20:36

没有想到好的去重方法,有大佬能给我调一下吗?

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
typedef unsigned long long ull;
int t;
ull mod=212370440130137957;
ull base=141;
int prise=233317; 
int n;
char s[100005];
int a[100005];
int hush(char s[100005]){
	int len=strlen(s);
	ull ans=0;
	for(int i=0;i<len;i++){
		ans=(ans*base+(ull)(s[i]))%mod+prise;
	}
	return ans;
}
int main(){
	cin>>t;
	for(int ii=1;ii<=t;ii++){
		memset(a,0,sizeof(a));
		scanf("%d",&n);
		for(int i=1;i<=n;i++){
			scanf("%s",s);
			a[i]=hush(s);
			bool qwq=0;
			for(int j=1;j<i;j++){
				if(a[j]==a[i]){
					qwq=1;
					break;
				}
			}
			if(qwq==0)
				cout<<s<<" ";
		}	
		cout<<"\n";
	}
	return 0;
}
2021/4/27 20:36
加载中...