题目:https://acm.hdu.edu.cn/showproblem.php?pid=6106
思路:
把题目给的七个数据画出文氏图,根据容斥定理就可以算出每个班的人数
AC代码:
//容斥定理,把那个三集合的文氏图画出来就求出解了
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,t;
int a[8];
scanf("%d",&t);
while(t--){
scanf("%d",&n);
int Max = 0;
for(int i = 0;i<n;i++){
int A,B,C,AB,BC,AC,ABC;
scanf("%d%d%d%d%d%d%d",&A,&B,&C,&AB,&BC,&AC,&ABC);
a[1] = A - AB - AC + ABC;
a[2] = B - AB - BC + ABC;
a[3] = C - AC - BC + ABC;
a[4] = AB - ABC;
a[5] = AC - ABC;
a[6] = BC - ABC;
a[7] = ABC;
int sum = 0;
bool flag = true;
for(int i = 1;i<=7;i++){
sum += a[i];
if(a[i] < 0) flag = false;
}
if(flag == false) continue;
Max = max(Max,sum);
}
printf("%d\n",Max);
}
system("pause");
return 0;
}