@[tangguo917](/user/926434) 没学过
by Crystal_Rose @ 2024-08-15 14:20:32
@[Crystal_Rose](/user/1194487) 按照题意,你应该开到 $2147483647$,但这显然是开不了这么大的,解决办法是使用 `map`
by lianchanghua @ 2024-08-15 14:21:21
@[lianchanghua](/user/564475) 6
by Crystal_Rose @ 2024-08-15 14:21:44
@[lianchanghua](/user/564475) 直接开map会T飞的,要用unordered_map加快读
by xiexinxin @ 2024-08-15 14:23:24
@[Crystal_Rose](/user/1194487) 所以,代码可以修改成:
```cpp
#include<bits/stdc++.h>
using namespace std;
long long b,n,m;
int main(){
cin>>b;
for(int i=1;i<=b;i++){
map<int,bool>a;
cin>>n;
for(int j=1;j<=n;j++){
cin>>m;
if(!a[m]){
cout<<m<<" ";
a[m]=1;
}
}
cout<<endl;
}
return 0;
}
```
by lianchanghua @ 2024-08-15 14:23:37
@[Crystal_Rose](/user/1194487) 但,你又会很惊奇的发现,T 掉了,这时候,把 `map` 改成 `unordered_map`
by lianchanghua @ 2024-08-15 14:24:45
@[Crystal_Rose](/user/1194487) 最后还是逃脱不了 TLE 的命运,所以我们可以继续卡常,加上快读快写,即可通过此题:
```cpp
#include<bits/stdc++.h>
#define int long long
using namespace std;
int b,n,m;
inline int read(){
int w=0,f=1;
char c;c=getchar_unlocked();
while(!(c>='0'&&c<='9')&&!(c=='-'))c=getchar_unlocked();
if(c=='-')f=-1,c=getchar_unlocked();
while(c>='0'&&c<='9'){
w=w*10+c-'0';
c=getchar_unlocked();
}
return w*f;
}
void write(int x){
if(x<0)x=-x,putchar('-');
if(x>9)write(x/10),putchar(x%10+'0');
if(x<=9)putchar(x+'0');
}
signed main(){
b=read();
for(int i=1;i<=b;i++){
unordered_map<int,bool>a;
n=read();
for(int j=1;j<=n;j++){
m=read();
if(!a[m]){
write(m);
putchar(' ');
a[m]=1;
}
}
putchar('\n');
}
return 0;
}
```
by lianchanghua @ 2024-08-15 14:26:58
话说,我是不是有点太魔怔了/kk
by lianchanghua @ 2024-08-15 14:27:31
@[xiexinxin](/user/926978) 啊对对对
by lianchanghua @ 2024-08-15 14:27:54
@[lianchanghua](/user/564475) 6
by Crystal_Rose @ 2024-08-15 14:28:22