现在的位置: 首页 > 综合 > 正文

CF – 246 – B. Increase and Decrease(贪心)

2019年08月30日 ⁄ 综合 ⁄ 共 503字 ⁄ 字号 评论关闭

题意:一个长为 n (1 ≤ n ≤ 10^5)的序列(元素(|ai| ≤ 10^4) ),可以取其中的两个数,一个数 + 1,另一个数就 - 1,可以这样操作无数次,问最后最多能有多少个数是一样的。

题目链接:http://codeforces.com/problemset/problem/246/B

——>>我觉得非常不错的题目,至少我被坑得团团转。。敲打

      第一种惯性思维:尽量地往平均数靠,答案为 n - 余数。。可惜,是错的。。

      第二种惯性改进思维:尽量地往平均数靠,答案为 max(n - 余数, 余数)。。可惜,还是错的。。

      贪心正解:无论数有多大,我都可以让 n - 1 个数变成 1,让第 n 个数独树一帜。。所以,答案的最小值为 n - 1。。

      当总和能被 n 整除,可以平分 n 数时,答案为 n 。。

#include <cstdio>

int main()
{
    int n, a;
    while (scanf("%d", &n) == 1)
    {
        int sum = 0;
        for (int i = 1; i <= n; ++i)
        {
            scanf("%d", &a);
            sum += a;
        }
        sum % n == 0 ? printf("%d\n", n) : printf("%d\n", n - 1);
    }

    return 0;
}

抱歉!评论已关闭.