山科交流赛-摆箱子
2016-05-03 08:32
309 查看
Description
有一堆形状完全一样的箱子,但是他们的强度不同,如果一个箱子的强度为x,那么这个箱子上面最多可以放x个箱子。现在我们已知一堆箱子的强度,我们想把这些箱子放置成一列一列的形状,每一列包含多个箱子,问最少可以放多少列。
Input
输入为多组数据,第一行为样例数T每组数据先输入一个n(1<=n<=100),表示箱子的总数
紧接着输入n个数x1,x2,x3...xn(0<=xi<=100),第i个数表示第i个箱子的强度
Output
输出只包含一个整数,表示最少的列数Sample Input
2 3 0 0 10 5 0 1 2 3 4
Sample Output
2 1
分析:贪心,很明显的贪心问题,元素排序,开始时,是想先把大的放在最底下,之后以此类推,WA50%,看了题解,是先把小的放在下面,之后贪心AC。。。。(跪了,为什么,这有什么区别吗。。。)
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> 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<n;i++) cin>>a[i]; sort(a,a+n); //for (int i=0;i<n;i++) // cout<<a[i]<<" "; memset(f,0,sizeof(f)); for (int i=0;i<n;i++) for (int j=0;j<=110;j++) { if (f[j] <= a[i]) { f[j]++; break; } } int ans=0; for (int i=0;i<=110;i++) { if (f[i]) ans++; } cout<<ans<<endl; } return 0; } /************************************************************** Problem: 1804 User: 1505180117 Language: C++ Result: Accepted Time:4 ms Memory:1272 kb ****************************************************************/
相关文章推荐
- 为什么项目总是陷入“进度延迟,客户不满意”的怪圈呢?
- Python图表绘制:matplotlib绘图库入门
- iMobile for Android技术文章-面自动裁剪
- c++异常机制分析
- Tabhost用法
- Android Studio 使用 Lambda表达式
- 关于wireframesketcher 4.4.7修改
- iPhone屏幕尺寸、分辨率及适配
- 设计模式--模版设计模式
- 学习笔记之深入浅出MFC 第8章 C++重要性质--- 执行期类型信息(RTTI)
- Ubuntu Android 开发(二) Android SDK 安装
- 北京大学互联网信息工程研发中心(深圳)
- 山科交流赛-LIS2
- SQL索引一步到位(此文章为“数据库性能优化二:数据库表优化”附属文章之一)
- STL源码学习---lower_bound和upper_bound
- UNIX I/O subsystem(file system,buffer)
- DDOS原理概述及其防御
- 程序员的成长阶梯和级别定义
- Android 猜歌曲游戏开发
- 程序员的成长阶梯和级别定义