比赛 EYOI与SBOI开学欢乐赛10th 评测结果 AAAAAAAAAA
题目名称 数字对数 最终得分 100
用户昵称 ZRQ 运行时间 1.565 s
代码语言 C++ 内存使用 5.74 MiB
提交时间 2022-10-10 19:34:38
显示代码纯文本
  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<map>
  5. using namespace std;
  6. const int N=205;
  7. map<int,int> cnt;
  8. int T,n,a[N],b[N],ans;
  9. bool done[N];
  10. char ch;
  11. 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 ;}
  12. int to(int x)
  13. {
  14. int res=0;
  15. while(x) x/=10,++res;
  16. return res;
  17. }
  18. int main()
  19. {
  20. freopen("numlg.in","r",stdin);
  21. freopen("numlg.out","w",stdout);
  22. read(T);
  23. while(T--)
  24. {
  25. read(n);
  26. for(int i=1;i<=n;++i) read(a[i]),++cnt[a[i]];
  27. for(int i=1;i<=n;++i)
  28. {
  29. read(b[i]);
  30. if(cnt[b[i]]) --cnt[b[i]],done[i]=1;
  31. }
  32. for(int i=1;i<=n;++i)
  33. if(a[i]>9&&cnt[a[i]])
  34. cnt[to(a[i])]+=cnt[a[i]],ans+=cnt[a[i]],cnt[a[i]]=0;
  35. for(int i=1;i<=n;++i)
  36. {
  37. if(done[i]) continue;
  38. if(b[i]<10&&cnt[b[i]]) --cnt[b[i]],done[i]=1;
  39. else if(b[i]>9&&cnt[to(b[i])]) --cnt[to(b[i])],++ans,done[i]=1;
  40. else if(b[i]>9&&!cnt[to(b[i])]) ++ans,b[i]=to(b[i]);
  41. }
  42. for(int i=1;i<=n;++i) if(b[i]>1&&!done[i]) ++ans;
  43. for(int i=2;i<=9;++i) ans+=cnt[i];
  44. printf("%d\n",ans);
  45. cnt.clear();
  46. memset(done,0,sizeof(done));
  47. ans=0;
  48. }
  49. return 0;
  50. }