求助(站外题/站内题)
  • 板块灌水区
  • 楼主Manki23333333
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/10/15 20:16
  • 上次更新2023/11/2 13:34:06
查看原帖
求助(站外题/站内题)
871004
Manki23333333楼主2023/10/15 20:16

放盒子

题目描述

有 nn 个盒子,它们的大小和重量相同,但材料的强度可能不同。其中每个盒子都有一个对应的强度 xix_i。即这个盒子顶部可以放多少个盒子

现在要将这些盒子叠放起来,为了节省空间,问这些盒子最少可以放成几堆

输入格式

第一行包含整数 nn 下一行包含 nn 个整数 x1,x2,...,xnx_1,x_2,...,x_n

输出格式

输出最少需要放几堆

样例 #1

样例输入 #1

3
0 0 10

样例输出 #1

2

提示

对于 100100% 的数据,1≤n≤1001≤n≤100,0≤xi≤1000≤x_i≤100

如果luogu有原题告诉我,没有的花告诉我为什么10pts

// code
#include <bits/stdc++.h>

using namespace std;

int n, a [105], t [105], top = 0;

bool cmp (int a, int b) {
	return a > b;
}

int main () {
	cin >> n;
	
	memset (t, 0x3f, n);
	
	for (int i = 1 ; i <= n ; i ++) 
		cin >> a [i];
	
	sort (a + 1, a + 1 + n, cmp);
	
	for (int i = 1 ; i <= n ; i ++) {
		bool flag = true;
		
		for (int j = 1 ; j <= top ; j ++) {
			if (a [i] < t [j]) {
				t [j] = a [i];
				flag = false;
				break;
			}
		}
		
		if (flag) {
			t [++top] = a [i];
		}
	}
	
	cout << top;
	
	return 0;
}
2023/10/15 20:16
加载中...