CF1000A 题解

题意

给定一组目标串组A和一组模式串组B,求模式串至少要多少次才能全都变为目标串?

题解

易知4个性质
1.一个串最多改变一次
2.不管怎么改变,字符串的长度都不会变
3.可以直接消去目标串组A与模式串组B中的相同字符串
4.因为题目没有无解情况,所以若长度为x的字符串在A中出现了 y 次,则B中一定有且仅有y个长度为x的字符串.

所以,根据 3 进行操作后,A(或B) 中剩下多少字符串,答案即是多少。

代码

#include <bits/stdc++.h>
using namespace std;

map<string, int>M;
int n, ans;
string s;

int main()
{
 cin >> n;
 ans = n;
 for(int i = 1; i <= n; i++)
 {
     cin >> s;
     M[s]++;
 } 
 
 for(int i = 1; i <= n; i++)
 {
     cin >> s;
     if(M[s])
     {
         M[s]--,ans--;
     }
 }
 
 cout << ans;
 return 0;
}
posted @ 2021-11-25 12:49  codekin  阅读(63)  评论(0)    收藏  举报
Document