P2816 宋荣子搭积木
描述: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;
}
P2816 宋荣子搭积木的更多相关文章
- [Luogu 2816]宋荣子搭积木
Description saruka非常喜欢搭积木,他一共有n块积木.而且saruka的积木很特殊,只能一块块的竖着摞,可以摞很多列.说过saruka的是特殊的积木了,这些积木都非常智能,第i块积木有 ...
- Android_就像小朋友“搭积木”一样。
就像小朋友“搭积木”一样.感觉这句话很有意思.完整的话是这样的: Android提供了大量功能丰富的UI组件,开发者只要按一定规律把这些UI组件组合起来 --就像小朋友“搭积木”一样,把这些UI组件搭 ...
- Leo 搭积木
Leo 搭积木[问题描述]Leo是一个快乐的火星人,总是能和地球上的 OIers玩得很 high.2012 到了, Leo 又被召回火星了,在火星上没人陪他玩了,但是他有好多好多积木,于是他开始搭积木 ...
- XJOI1657&Codevs1255搭积木【树状动规】
搭积木 一种积木搭建方式,高为H的积木,最底层有M个积木,每一层的积木数是他的低一层的积木数+1或-1.总共有N个积木.(且每行积木数不超过10)比如上图N=13 H=6 M=2. 输入格式: 第一行 ...
- 蓝桥杯-搭积木-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- codevs 3249 搭积木
提交地址:http://codevs.cn/problem/3249/ 3249 搭积木 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目 ...
- 搭积木(block)
[问题描述]小 OY 是一个喜欢搭积木的孩子,他有一天决定向小 C 展示他特别的搭积木技巧.现在一条直线上从左到右有 n 个位置,标号 1..n,第 i 个位置坐标为 x_i.每个位置上都预先叠好了一 ...
- 搭积木(java)-蓝桥杯
搭积木小明最近喜欢搭数字积木,一共有10块积木,每个积木上有一个数字,0~9.搭积木规则:每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小.最后搭成4层的金字塔形,必须用完所有的积木.下 ...
- 《陪孩子像搭积木一样学编程》,一起来玩Scratch(1)使用Scratch编程的基本流程
编程是一件很有趣的事情.初次接触编程,你可能不知所措,别担心,这并不复杂.首先,为了让读者对编程有大概的了解,可以把编写Scratch程序的过程分成7个步骤(如图1.8).注意,这是理想状态.在实际的 ...
随机推荐
- std::string构造函数
string(); string (const string& str); string (const string& str, size_t pos, size_t len = np ...
- python填写问卷星,疫情上报
#!!!注意:修改main里的url为真实的url,按需修改 50行 set_data中的submitdata # 61行 ip 修改为 真ip # submittype可能有错误,在151行 # 提 ...
- 8行代码帮你python建立UDP通信
首先我们要搭建一个UDP通信,首先我们就要知道什么UDP: UDP用户数据报传输协议,它位于TCP/IP协议的传输层,是一种无连接的协议,它发送的报文不能确定是否完整地到达了另外一端.UDP广泛应用于 ...
- vue2.x学习笔记(六)
接着前面的内容:https://www.cnblogs.com/yanggb/p/12571171.html. class与style绑定 操作元素的class列表和内联样式,是数据绑定的一个常见需求 ...
- python 基础篇 模块化
在做项目的时候,虽然你不可能把全世界的代码都放到一个文件夹下,但是类似模块化的思想还是要有的--那就是以项目的根目录作为最基本的目录,所有的模块调用,都要通过根目录一层层向下索引的方式来 import ...
- java 递归及其经典应用--求阶乘、打印文件信息、计算斐波那契数列
什么是递归 我先看下百度百科的解释: 一种计算过程,如果其中每一步都要用到前一步或前几步的结果,称为递归的.用递归过程定义的函数,称为递归函数,例如连加.连乘及阶乘等.凡是递归的函数,都是可计算的,即 ...
- git .gitignore不生效
原因是.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的. 解决方法: 1.先把规则写好,然后把规则对应的文件删了,然后 ...
- linux下的.ssh文件夹路径等
1.linux下的.ssh文件夹在~下,直接cd ~/.ssh即可 2.tp经过gd类处理过的水印图片格式为png 3.前端扒下别人家的网站如果自己本地打开有出现相同的代码段则有可能是js动态添加的, ...
- StringRedisTemplate的常用操作
stringRedisTemplate.opsForValue().set("test", "100",60*10,TimeUnit.SECONDS);//向r ...
- c++库 c语言接口
//code in add.cxx #include "add.h" int sample::method() { cout<<"method is call ...