题目链接:delete
题面:
4 1 3 1 2 1
3Hintif WLD deletes a 3, the numbers remain is [1,1,2],he‘ll get 2 different numbers. if WLD deletes a 2, the numbers remain is [1,1,3],he‘ll get 2 different numbers. if WLD deletes a 1, the numbers remain is [1,2,3],he‘ll get 3 different numbers.
解题:
利用set计数即可。
代码:
#include <iostream>
#include <cmath>
#include <set>
using namespace std;
int main()
{
int n,k,tmp,ans;
while(scanf("%d",&n)!=EOF)
{
set <int> store;
for(int i=1;i<=n;i++)
{
scanf("%d",&tmp);
store.insert(tmp);
}
scanf("%d",&k);
if(n==store.size())
{
ans=n-k;//刚好,就直接减
}
else
{
tmp=n-store.size();//可以不减少的前提下,提供的最大数量
if(tmp>=k)//够减,,数量不变
ans=store.size();
else //不够减,减去多余的后,再减种类数
ans=store.size()-(k-tmp);
}
printf("%d\n",ans);
}
return 0;
}原文:http://blog.csdn.net/david_jett/article/details/46368499