Codeforces Round #722 (Div. 2) A. Eshag Loves Big Arrays贪心题

Codeforces Round #722 (Div. 2) A. Eshag Loves Big Arrays贪心题

题目:
A. Eshag Loves Big Arrays
time limit per test1 second
memory limit per test256 megabytes
inputstandard input
outputstandard output
Eshag has an array aa consisting of nn integers.

Eshag can perform the following operation any number of times: choose some subsequence of aa and delete every element from it which is strictly larger than AVGAVG, where AVGAVG is the average of the numbers in the chosen subsequence.

For example, if a=[1,4,3,2,4]a=[1,4,3,2,4] and Eshag applies the operation to the subsequence containing a1a1, a2a2, a4a4 and a5a5, then he will delete those of these 44 elements which are larger than a1+a2+a4+a54=114a1+a2+a4+a54=114, so after the operation, the array aa will become a=[1,3,2]a=[1,3,2].

Your task is to find the maximum number of elements Eshag can delete from the array aa by applying the operation described above some number (maybe, zero) times.

A sequence bb is a subsequence of an array cc if bb can be obtained from cc by deletion of several (possibly, zero or all) elements.

Input
The first line contains an integer tt (1≤t≤100)(1≤t≤100) — the number of test cases. The description of the test cases follows.

The first line of each test case contains an integer nn (1≤n≤100)(1≤n≤100) — the length of the array aa.

The second line of each test case contains nn integers a1,a2,…,ana1,a2,…,an (1≤ai≤100)(1≤ai≤100) — the elements of the array aa.

Output
For each test case print a single integer — the maximum number of elements Eshag can delete from the array aa.

Example
input
3
6
1 1 1 2 2 3
6
9 9 9 9 9 9
6
6 4 1 1 4 1
output
3
0
3
Note
Consider the first test case.

Initially a=[1,1,1,2,2,3]a=[1,1,1,2,2,3].

In the first operation, Eshag can choose the subsequence containing a1a1, a5a5 and a6a6, their average is equal to a1+a5+a63=63=2a1+a5+a63=63=2. So a6a6 will be deleted.

After this a=[1,1,1,2,2]a=[1,1,1,2,2].

In the second operation, Eshag can choose the subsequence containing the whole array aa, the average of all its elements is equal to 7575. So a4a4 and a5a5 will be deleted.

After this a=[1,1,1]a=[1,1,1].

In the second test case, Eshag can’t delete any element.
在这里插入图片描述

解题方法:这题表面看起来可能比较复杂,实际很简单,不需要枚举那么多方案,也并不需要求出平均数。我们观察数学规律可以发现,能删除掉的数一定有比它更小的数,反之,我们可以只求最小的数的数量,然后用总数量减去最小的数的数量即可。

#include<iostream>
#include<sstream>
#include<string>
#include<vector>
#include<unordered_map>
#include<cmath>
#include<algorithm>
int a[110];
using namespace std;
int main()
{
	int m; cin >> m;
	while (m--)
	{
		int n; cin >> n;
		for (int i = 0; i < n; i++)
		{
			cin >> a[i];
		}
		sort(a, a + n);
		
		int cnt = 1; 
		for (int i = 1; i < n; i++)
		{
			if (a[i - 1] == a[i])
			{
				cnt++;//cnt为最小元素的数量
			}
			else
				break;
		}
		
		cout << n-cnt << endl;
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值