牛客网 ACM 竞赛 60282 C 题 - 数组平均数整数化最小代价
题目要求通过操作使得数组的平均数变成整数,并计算出最小的总代价。\n\n首先,我们需要知道平均数的计算方法。平均数等于所有元素的和除以元素的个数。假设数组的和为sum,元素的个数为n,则平均数为avg=sum/n。\n\n我们可以通过以下几个步骤来解决这个问题:\n1. 计算数组的和sum和元素的个数n。\n2. 如果sum % n == 0,则平均数已经是整数,不需要进行操作,总代价为0。\n3. 如果sum % n != 0,则需要进行操作来使得平均数变成整数。\n - 如果sum % n > n / 2,则将sum % n - n / 2个元素增加x,代价为(sum % n - n / 2) * p。\n - 如果sum % n <= n / 2,则将n / 2 - sum % n个元素减少y,代价为(n / 2 - sum % n) * q。\n4. 总代价为步骤3中的代价。\n\n下面是一个实现的示例代码:\n\ncpp\n#include <iostream>\nusing namespace std;\n\nint main() {\n int n, p, q, x, y;\n cin >> n >> p >> q >> x >> y;\n\n int sum = 0;\n for (int i = 0; i < n; i++) {\n int num;\n cin >> num;\n sum += num;\n }\n\n if (sum % n == 0) {\n cout << 0 << endl;\n } else {\n int avg = sum / n;\n int remainder = sum % n;\n int cost = 0;\n\n if (remainder > n / 2) {\n cost = (remainder - n / 2) * p;\n } else {\n cost = (n / 2 - remainder) * q;\n }\n\n cout << cost << endl;\n }\n\n return 0;\n}\n\n\n该代码先读入输入的参数n、p、q、x、y,然后计算数组的和sum。如果sum % n == 0,则输出0;否则,计算平均数avg和余数remainder,根据remainder的值计算总代价cost并输出。
原文地址: https://www.cveoy.top/t/topic/pAAp 著作权归作者所有。请勿转载和采集!