比赛 |
EYOI与SBOI开学欢乐赛10th |
评测结果 |
AAAAAAAAAA |
题目名称 |
数字对数 |
最终得分 |
100 |
用户昵称 |
ZRQ |
运行时间 |
1.565 s |
代码语言 |
C++ |
内存使用 |
5.74 MiB |
提交时间 |
2022-10-10 19:34:38 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
using namespace std;
const int N=205;
map<int,int> cnt;
int T,n,a[N],b[N],ans;
bool done[N];
char ch;
inline void read(int &x){x=0;ch=getchar();while(ch<48||ch>57)ch=getchar();while(ch>47&&ch<58)x=(x<<3)+(x<<1)+(ch^48),ch=getchar();return ;}
int to(int x)
{
int res=0;
while(x) x/=10,++res;
return res;
}
int main()
{
freopen("numlg.in","r",stdin);
freopen("numlg.out","w",stdout);
read(T);
while(T--)
{
read(n);
for(int i=1;i<=n;++i) read(a[i]),++cnt[a[i]];
for(int i=1;i<=n;++i)
{
read(b[i]);
if(cnt[b[i]]) --cnt[b[i]],done[i]=1;
}
for(int i=1;i<=n;++i)
if(a[i]>9&&cnt[a[i]])
cnt[to(a[i])]+=cnt[a[i]],ans+=cnt[a[i]],cnt[a[i]]=0;
for(int i=1;i<=n;++i)
{
if(done[i]) continue;
if(b[i]<10&&cnt[b[i]]) --cnt[b[i]],done[i]=1;
else if(b[i]>9&&cnt[to(b[i])]) --cnt[to(b[i])],++ans,done[i]=1;
else if(b[i]>9&&!cnt[to(b[i])]) ++ans,b[i]=to(b[i]);
}
for(int i=1;i<=n;++i) if(b[i]>1&&!done[i]) ++ans;
for(int i=2;i<=9;++i) ans+=cnt[i];
printf("%d\n",ans);
cnt.clear();
memset(done,0,sizeof(done));
ans=0;
}
return 0;
}