题目链接: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;
}
本文提供了一道来自ACM CSUOJ平台的编程题解答,该题要求判断三个字符串集合是否满足特定的交集条件。通过分析字符串集合A、B、C之间的交集大小来确定它们是否符合题目要求。
828

被折叠的 条评论
为什么被折叠?



