题目连接:http://codeforces.com/contest/1243/problem/A
翻译:Ujan要做一个房顶,给n个木条,每个木板宽度为条,长度为ai,问并起来最大能合成多大的正方形房顶
思路:给木条排个序,从大往小加,直到长度小于宽度,此时的宽度就是答案
AC代码
#include <iostream>
#include <cstdio>
#include <string>
#include <vector>
#include <queue>
#include <deque>
#include <stack>
#include <cmath>
#include <cstring>
#include <algorithm>
#define ms(x,y) memset(x,y,sizeof(x))
#define INF 0x3f3f3f3f
using namespace std;
const int maxn =1005;//提交记得修改
int a[maxn];
int main()
{
int T;
cin>>T;
while(T--){
int n;
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
sort(a+1,a+n+1);
int res;
for(int i=n;i>=1;i--){
if(a[i]<=n-i)break;
else res=n-i+1;
}
cout<<res<<endl;
}
}