K. 高度期望
题目链接:https://www.hpuoj.com/contest/16/problem/K/
K. 高度期望
单测试点时限: 1.0 秒
内存限制: 512 MB
这里是 22 世纪,有一款神奇的机器,可以使任意一棵树长到任意高度但不超过 1000cm,但是该机器却只能使用一次。为了提升整片树林的平均树高,使得平均树高大于某个值,请设计提升方案。我们的 Boss 对方案本身不感兴趣,你只需要提供提升后需要的机器数量。
输入
第一行 2 个整数 𝑛, 𝑚, 表示有 𝑛 颗树和期望的最小平均树高 𝑚 cm。
之后的一行 𝑛 个整数 𝑎1 𝑎2⋯𝑎𝑛,表示 𝑛 颗树的高度。
0<𝑛≤105, 0<𝑚≤103, 0<𝑎1 𝑎2⋯𝑎𝑛≤103 。
输出
输出提升平均树高所需要的最少机器数量
样例
input
5 1000 1000 1000 1000 500 1000
output
1
解题思路:贪心,尽量多加。
#include <iostream> #include <cstring> #include <algorithm> #include <cstdio> #include <cmath> using namespace std; int main() { int n,m; cin >> n >> m; int a[n]; long long sum = 0; long long count = 0; for (int i = 0; i < n; i++) { cin >> a[i]; sum += a[i]; } double avge = sum*1.0 / n*1.0; double avge2 = 0; sort(a,a+n); if (avge > m) { cout << "0" << endl; return 0; } else { for (int i = 0; i < n; i++) { sum += 1000 - a[i]; count++; avge2 = sum*1.0 / n*1.0; if (avge2 >= m) { break; } } } cout << count << endl; return 0; }