描述:https://www.luogu.com.cn/problem/P2816

saruka非常喜欢搭积木,他一共有n块积木。而且saruka的积木很特殊,只能一块块的竖着摞,可以摞很多列。说过saruka的是特殊的积木了,这些积木都非常智能,第i块积木有一个情绪值xi,当摞在这块积木上的积木总数超过xi时,这块积木就会很不高兴,发誓以后不会再和saruka一起玩耍了。saruka这么爱玩积木,肯定不会让积木不高兴的,但是saruka又希望每块积木都被用上,并且摞的积木列数最少。你能来帮帮saruka嘛?


考虑我们已经堆好了3列积木,现在来了一个新积木

我们该把它放在哪一列呢?

堆在上面是不好考虑的,因为我们不知道下面的积木是不是承受的了重量

所以我们考虑每次把新来的积木放在每一列的最下面

在放的下的前提下,我们尽量放在积木数最多的那一列下

因为后续的积木可能不能放在这一列(承受重量属性比较低)

比如原来是2,3,5,再放肯定要放在5的底下,变成2,3,6。对于后续的决策来说,2,3,6肯定比3,3,5或者2,4,5优。

那么我们先把积木从小到大排序

Ⅰ能放下的话,挑最高的积木那一列放

Ⅱ放不下的话,新开一列

#include <bits/stdc++.h>
using namespace std;
int n;
int a[],f=,w[];
int main()
{
cin>>n;
for(int i=;i<=n;i++) cin>>a[i];
sort(a+,a++n);
w[]=;
for(int i=;i<=n;i++)
{
int flag=;
for(int j=;j<=f;j++)
{
if(a[i]>=w[j])
{
flag=;
w[j]++;
break;
}
}
if(!flag){
f++;
w[f]++;
}
}
cout<<f;
}

最新文章

  1. C#-WebForm-ASP开发练习:从数据库中动态添加信息
  2. js中的数据类型
  3. MEAN组合框架搭建教程
  4. 【vijos1659】河蟹王国 线段树&lt;区间修改+区间最大值&gt;
  5. 整理一些js中常见的问题
  6. RegisterClientScriptBlock CommandName 模块列 操作完成 提示
  7. Error:The SDK Build Tools revision (19.0.3) is too low for project &#39;:app&#39;. Minimum required is 19.1.
  8. JS核心笔记
  9. CSS透明opacity和IE各版本透明度滤镜filter的准确用法
  10. 关于访问Jira和Confluence服务越来越缓慢的解决办法阐述
  11. Java 文件读写操作
  12. Mac中opencv批量对图片进行二值化
  13. Spring介绍及配置(XML文件配置和注解配置)
  14. [转]nginx折腾记(HTTP性能能测试,与Apache对比)
  15. 《剑指Offer》题一~题十
  16. API文档打开显示&#39;已取消到该网页的导航&#39;的解决方法
  17. 数据结构 Job
  18. cogs 2691. Sumdiv
  19. Xamarin.Forms的滚动视图ScrollView
  20. esp32(M5STACK) ARDUINO开发环境搭建(ubuntu)

热门文章

  1. 墨者学院靶场:uWSGI(CVE-2018-7490)路径遍历漏洞复现
  2. 003-scanf函数使用和表达式-C语言笔记
  3. 学习笔记分享之汇编---3. 堆栈&amp;标志寄存器
  4. x86汇编之栈与子程序调用
  5. 记一次错误 POST http://127.0.0.1:8000/auth/signup/ 500 (Internal Server Error)
  6. Dae-Da-Lus小组idea集锦
  7. [YII2.0] 高级模板简单安装教程
  8. 原生Js贪吃蛇游戏实战开发笔记
  9. GOLANG 闭包和普通函数的区别
  10. unset变量释放内存不起作用