hdu 6106.Classes
2017-10-18 18:20
274 查看
题目描述:
学校设立了三门选修课,假设这些课程是A,B,C。N个班的学生参加了这些课程。 现在,学校要计算每班入读至少一门课程的学生人数,并记录其中人数的最大值。 每班上传7份资料,选择A的学生人数,选择B的学生人数,选择C的学生人数,同时选择AB的学生人数,同时选择BC的学生人数,同时选择AC的学生人数,同时选择ABC的学生人数。 根据这7个数据,学校可以计算这个班的学生人数。 然而,由于统计错误,一些数据是错误的,这些数据应该被忽略。 聪明的你必须知道如何编写一个程序来找到人数的最大值。输入:
输入的第一行给出了测试样例T的数量; 测试样例如下。 每个案例以一行整数N开始,表示班级的数量。 然后N行,每行包含7个数据:a,b,c,d,e,f,g,表示本课程中选择A,B,C,AB,BC,AC,ABC的学生人数。 保证在每个测试用例中至少有一个班的数据是完全正确的。范围 T≤100 1≤N≤100 0≤a,b,c,d,e,f,g≤100
输出:
对于每个测试用例,输出一行包含一个整数表示至少选择一门课程的学生的最大数量。样例输入
2
2
4 5 4 4 3 2 2
5 3 1 2 0 0 0
2
0 4 10 2 3 4 9
6 12 6 3 5 3 2
样例输出
7
15
#include<stdio.h>
#include<string.h>
int main()
{
int t,n,sum,flag,maxn;
int a[101][8];
int i,j;
scanf("%d",&t);
while(t --)
{
maxn = sum = 0;
scanf("%d",&n);
for(i = 0;i < n;i ++)
{
for(j = 0;j < 7;j ++)
scanf("%d",&a[i][j]);
}
for(i = 0;i < n;i ++)
{
a[i][3] -= a[i][6];
a[i][4] -= a[i][6];
a[i][5] -= a[i][6];
if(a[i][3] < 0 || a[i][4] < 0 || a[i][5] < 0)
continue;
a[i][0] -= a[i][3]+a[i][5]+a[i][6];
a[i][1] -= a[i][3]+a[i][4]+a[i][6];
a[i][2] -= a[i][4]+a[i][5]+a[i][6];
if(a[i][0] < 0 ||a[i][1] < 0 ||a[i][2] < 0 )
continue;
for(j = 0;j < 7;j ++)
sum += a[i][j];
if(maxn < sum)
maxn = sum;
sum = 0;
}
printf("%d\n",maxn);
}
return 0;
}
相关文章推荐
- HDU 6106 (2017 多校训练赛6 1011)Classes
- hdu 6106 Classes 2017多校第六场1011签到题 容斥原理
- hdu 6106 Classes
- HDU 6106 Classes (简单集合运算 17多校第六场)
- HDU 6106 17多校6 Classes(容斥简单题)
- 【2017多校】HDU 6106 Classes 【集合计算】
- HDU - 6106 Classes(阅读题)
- 【HDU 6106 Classes】
- hdu-6106-Classes
- 多校6 HDU-6106 Classes 容斥原理
- hdu 6106 Classes(容斥)
- HDU 6106 Classes
- HDU 6106 Classes
- HDU 6106 Classes(水~)
- hdu 6106 Classes
- HDU 6106 Classes
- HDU 6106 Classes (水题)
- HDU 6106-Classes
- HDU 6106 Classes
- HDU - 6106 Classes