比赛 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;
 }