→题目链接←
每个牌肯定是管第一个比它小的牌是最优的
所以我们只需要从小到大记录对面目前还剩几张牌,手里只要有能管的就管上一个
代码:
#include<iostream>
#include<cstdio>
using namespace std;
int n;
bool f[100010];
int ans=0;
int main(){
scanf("%d",&n);
for(int i=0; i<n; i++){
int x;
scanf("%d",&x);
f[x]=true;
}
int num=0;
for(int i=1; i<=2*n; i++){
if(f[i])num++;
if(!f[i] && num)num--,ans++;
}
printf("%d\n",ans);
return 0;
}