逻辑题
根据容斥原理,选课程A的包括选有课程AB,课程AC以及课程ABC的。
因此想要求到一个班级最大的人数,那么就是求只选A,B,C,AB,AC,BC,ABC的人数之和。
如果有一门课程的人数小于0,那么跳过认为此数据错误,不做处理。
#include <bits/stdc++.h>
using namespace std;
const int maxn=100005;
int a[7];
int main(int argc, char const *argv[])
{
int T;
scanf("%d",&T);
while(T--){
int n,ans=0;
scanf("%d",&n);
for(int i=0;i<n;i++){
for(int j=0;j<7;j++){
scanf("%d",&a[j]);
}
for(int j=0;j<6;j++){
a[j]-=a[6];
}
a[0]-=a[3],a[0]-=a[5];
a[1]-=a[3],a[1]-=a[4];
a[2]-=a[4],a[2]-=a[5];
int temp=0;
for(int j=0;j<7;j++){
if(a[j]<0){
temp=0;
break;
}
else temp+=a[j];
}
ans=max(ans,temp);
}
printf("%d\n",ans);
}
return 0;
}