RT,将此代码中的unordered_map用map代替后即可在CF中通过,求问为什么
#pragma GCC optimize(2)
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <unordered_map>
#include <iostream>
using namespace std;
const int N=200003;
unordered_map<int,int>np;
unordered_map<int,int> :: iterator it;
int Q,n,a[N],b[N],m;
int p[11],q[11];
inline void Read(int&s){
s=0;
char c=getchar();
while(c<'0'||c>'9') c=getchar();
while(c>='0'&&c<='9'){
s=(s<<3)+(s<<1)+(c^48);
c=getchar();
}
return ;
}
inline int work(int x){
int s=0;
while(x){
++s;
x/=10;
}
return s;
}
int main(){
Read(Q);
while(Q--){
Read(n);
int i,x,ans=0;
np.clear();
for(i=1;i<=n;++i){
Read(x);
++np[x];
}
m=0;
for(i=1;i<=n;++i){
Read(x);
if(np[x]) --np[x];
else b[++m]=x;
}
m=0;
for(it=np.begin();it!=np.end();++it){
while(it->second){
--(it->second);
a[++m]=it->first;
}
}
memset(p,0,sizeof(p));
memset(q,0,sizeof(q));
for(i=1;i<=m;++i){
if (a[i]>=10) {a[i]=work(a[i]); ++ans;} ++p[a[i]];
if (b[i]>=10) {b[i]=work(b[i]); ++ans;} ++q[b[i]];
}
for(i=2;i<=9;++i) ans+=abs(p[i]-q[i]);
printf("%d\n",ans);
}
return 0;
}