有一堆形狀完全一樣的箱子,但是他們的強度不同,如果乙個箱子的強度為x,那麼這個箱子上面最多可以放x個箱子。
現在我們已知一堆箱子的強度,我們想把這些箱子放置成一列一列的形狀,每一列包含多個箱子,問最少可以放多少列。
輸入為多組資料,第一行為樣例數t
每組資料先輸入乙個n(1<=n<=100),表示箱子的總數
緊接著輸入n個數x1,x2,x3...xn(0<=xi<=100),第i個數表示第i個箱子的強度
輸出只包含乙個整數,表示最少的列數
2
30 0 10
50 1 2 3 4
2
1
分析:貪心,很明顯的貪心問題,元素排序,開始時,是想先把大的放在最底下,之後以此類推,wa50%,看了題解,是先把小的放在下面,之後貪心ac。。。。(跪了,為什麼,這有什麼區別嗎。。。)
#include #include #include #include using namespace std;
int a[110],f[110];
int main()
{ int t;
cin>>t;
while (t--)
{int n;
cin>>n;
for (int i=0;i>a[i];
sort(a,a+n);
//for (int i=0;i
山科交流賽 LIS
給定乙個長度為n的序列 n 1000 記該序列lis 最長上公升子串行 的長度為m,求該序列中有多少位置不相同的長度為m的嚴格上公升子串行。先輸入乙個t,表明下面會有幾組資料。每組資料先輸入乙個n,表明陣列大小。下面一行有n個數代表該陣列,且 1 a i n 輸出為一行,只需輸出上述要求的個數 輸出...