http://acm.hdu.edu.cn/showproblem.php?pid=6106
共有3个辅导班,给出若干班级中学生报A,B,C,AB,AC,BC,ABC的情况,求班级人数最多有多少人,但题目还说存在错误信息,但对于错误信息的处理不是说的很明白,看样例介绍对于错误信息是直接忽视的。至于如何去判断给的信息是否为正确信息呢,可以运用VN图的知识来写。一个班级的人数公式是
A+B+C-AB-AC-BC+ABC.
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int main(){
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
long long int maxx=0;
long long int a,b,c,ab,bc,ac,abc;
for(int i=1;i<=n;i++)
{
cin>>a>>b>>c>>ab>>bc>>ac>>abc;
if(a-ac-ab+abc<0)continue;
if(b-bc-ab+abc<0)continue;
if(c-ac-bc+abc<0)continue;
if(ac-abc<0)continue;
if(bc-abc<0)continue;
if(ab-abc<0)continue;
if(abc<0)continue;
maxx=max(maxx,a+b+c-ab-ac-bc+abc);
}
cout<<maxx<<endl;
}
return 0;
}