Description
给定一个长度为\(n\)的数组\(a\),提供一种操作:
- 每次操作从\(a\)选择任意长的子序列。
- 设其子序列的平均数为\(AVG\)。
- 然后删去子序列中大于\(AVG\)的值。
操作次数不限,求最多可删除的元素个数。
Constraints
- \(1 \le n \le 100\)
- \(1 \le a_i \le 100\)
Solution
构造极端的做法。每次挑选全局最小的值和当前最大的值,显然当前最大的值要被删除。
最后只剩下全局最小的值,因此答案就是\(n - min\_count\)。
Code
#include <bits/stdc++.h>
using namespace std;
namespace vs = views;
int main() {
int T; cin >> T;
for(auto _ : vs::iota(0, T)) {
int min_value = 111;
int min_count = 0;
int n, temp;
cin >> n;
for(auto _ : vs::iota(0, n)) {
cin >> temp;
temp -= min_value;
if(temp < 0) min_value += temp, min_count = 1;
else if(temp == 0) min_count++;
}
cout << n - min_count << endl;
}
}