ZOJ Problem Set - 3819Average Score
题目大意:给你两个班的的学生的分数(A,B班)。A班有一个学生的分数没有给出。
如今要求你给出这个学生分数的上下限。使得这个学生的分数满足把这个学生拿出A班放到B班。两个班的平均分都提高。
解题思路:
Sa:代表A班的学生除了要求的那种学生的总分;Sb:代表B班同学的学生的总分;
n:代表A班学生的总数; m: 代表B班同学的学生总数。
x代表该学生的分数。
满足:1.(sa + x) / n < sa/(n - 1) ; 2.(sb + x) / (m + 1) > sb / m;
得:sb/(m + 1) < x < sa/(n -1) 注意:取整的问题。
代码:
#include <cstdio>
#include <cstring>
int main () {
int T;
int n, m;
int score;
scanf ("%d", &T);
while (T--) {
int sum1 = 0;
int sum2 = 0;
scanf ("%d%d", &n, &m);
for (int i = 0; i < n - 1; i++) {
scanf ("%d", &score);
sum1 += score;
}
for (int i = 0; i < m; i++) {
scanf ("%d", &score);
sum2 += score;
}
if (sum1 % (n - 1) == 0)
sum1 = sum1 / (n - 1) - 1;
else
sum1 = sum1 / (n - 1);
sum2 = sum2 / m + 1;
printf ("%d %d
", sum2, sum1);
}
return 0;
}