题意
简单的描述一下题意,最先是小明在院子里,然后给定n个奶奶,最先奶奶是在家的,每个奶奶都有个规定的数ai,这个ai是奶奶出门看见必须是有大于等于ai个人在院子里,才能进院子。问院子里最多有好多人?
思路
直接先来个排序,然后用贪心思想来做,我们排序后获得到一个升序数组(1到n),然后判断i位置上的奶奶<=她的规定数,找到最大的那个位置,我们让前面的奶奶和这个位置上的奶奶全部出门看一看,这样使得全部满足条件。
AC代码
#include<bits\stdc++.h>
using namespace std;
const int MAXN=1e5+5;
int arr[MAXN];
int main(){
int t;
scanf("%d",&t);
while(t--){
int n,cnt=1,mx=0;
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&arr[i]);
sort(arr+1,arr+n+1);
for(int i=1;i<=n;i++)
if(arr[i]<=i) mx=max(mx,i);
printf("%d\n",cnt+mx);
}
return 0;
}