1 条题解
-
0
C++ :
#include <cstdio> #include <algorithm> using namespace std; /* 盒子打包:盒子只能套进严格更大的盒子,并且每个盒子最多直接装一个盒子。 同一尺寸的盒子之间无法互相嵌套(要求 ai < aj), 所以把每个尺寸各取一个、按尺寸从小到大叠成一列,能叠的高度就是该尺寸的出现次数。 出现次数最多的那个尺寸决定了最少可见数:这些盒子必须各自成为某一列的"最外层"或独立可见, 而当列数 = 最大出现次数时,总能按尺寸递增把其余盒子分配进各列。 样例 4 / 4 2 4 3 -> 尺寸 4 出现 2 次 -> 2。 */ static long long a[5005]; int main(){ int n; if(scanf("%d", &n) != 1) return 0; for(int i = 1; i <= n; i++) scanf("%lld", &a[i]); sort(a + 1, a + 1 + n); long long best = 0, cur = 1; for(int i = 1; i < n; i++){ if(a[i] == a[i + 1]) cur++; else { if(cur > best) best = cur; cur = 1; } } if(cur > best) best = cur; printf("%lld\n", best); return 0; }
- 1
信息
- ID
- 2848
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者