题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1550
题解:
1.A+B 与C的交集必须>=n
2.A与C的交集必须>=n/2,B与C的交集必须>=n/2。
代码如下:
#include <iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define ms(a, b) memset((a), (b), sizeof(a))
typedef long long ll;
const ll mod=1e9+7;
char a[100010], b[100010], c[100010];
int s1[30],s2[30],s3[30],ss[30];
void solve()
{
while(scanf("%s",a)!=EOF)
{
scanf("%s%s",b,c);
int n = strlen(a);
ms(s1,0); ms(s2,0); ms(s3,0), ms(ss,0);
int m1 = 0, m2 = 0, m3 = 0;
for(int i = 0; i<n; i++)
{
s1[a[i]-65]++; ss[a[i]-65]++;
s2[b[i]-65]++; ss[b[i]-65]++;
s3[c[i]-65]++;
}
for(int i = 0; i<26; i++)
{
m1 += min(s1[i],s3[i]);
m2 += min(s2[i],s3[i]);
m3 += min(ss[i],s3[i]);
}
if(m3<n || m1*2<n || m2*2<n)
puts("NO");
else
puts("YES");
//cout<<m1<<' '<<m2<<' '<<m3<<endl;
}
}
int main()
{
solve();
return 0;
}