ZOJ Problem Set

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;
}
原文地址:https://www.cnblogs.com/blfbuaa/p/6993012.html