为了最大化吃掉的果冻数量,每次吃掉一种果冻的所有数量,直到只剩下一个。
具体实现时,我们可以使用哈希表去统计每一种果冻的数量,对于每一种果冻,我们只保留一个,其余全部吃掉。最后,我们将所有吃掉的果冻数量相加,就得到了答案。
C++
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int>PII;
#define x first
#define y second
typedef long long ll;
const int N=1E5+10;
int n,w[N],f[N];
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
w[x]++;
}
int res=0;
for(int i=1;i<=100;i++)res+=max(0,w[i]-1);
cout<<res<<endl;
return 0;
}
Java
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int>PII;
#define x first
#define y second
typedef long long ll;
const int N=1E5+10;
int n,w[N],f[N];
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
w[x]++;
}
int res=0;
for(int i=1;i<=100;i++)res+=max(0,w[i]-1);
cout<<res<<endl;
return 0;
}
Python
n = int(input())
w = [0] * 101
for _ in range(n):
x = int(input())
w[x] += 1
res = 0
for i in range(1, 101):
res += max(0, w[i] - 1)
print(res)
小红是一位很喜欢收藏东西的人。他非常喜欢吃果冻,有一天他买了很多果冻,但是他也希望保留一些果冻作为收藏。
他思考了一会儿,然后提出了一个问题:他最多可以吃掉多少个果冻,而每种果冻至少需要留下一个作为收藏(每种果冻都不能吃光)。
第一行输入一个正整数 n ,代表果冻的数量
第二行输入 n 个正整数 ai ,代表每个果冻的种类。
1≤n,ai≤100
输出一个整数,代表小红可以吃掉果冻的最大数量。
输入
5
1 2 3 4 5
输出
0
样例解释
每种果冻都只有一个,因此无法吃任何果冻。
输入
4
2 1 1 2
输出
2
样例解释
类型 1 的果冻和类型 2 的果冻各吃一个,这样每个都留下了一个。
In following contests: