A小 G 搭积木
文件名 输入文件 输出文件 时间限制 空间限制
box.cpp box.in box.out 2s 128MB
题目描述
小 G 喜欢搭积木。小 G 一共有 n 块积木,并且积木只能竖着一块一块的摞,可
以摞多列。小 G 的积木都是智能积木,第 i 块积木有一个情绪值 X i 。当摞在该积
木上面积木总数超过 X i 时,i 号积木就会不高兴。小 G 情商这么高,肯定不希望
有积木不高兴。但是他又希望每块积木都被用上,并且摞的积木列的总数最少。你
能帮帮萌萌的小 G 吗?
输入格式
输入文件第一行一个数字 n,含义如题目所述。
第 2 行一共 n 个数,第 i 个数为 X i ,含义如题目所述。
输出格式
输出一个数字,表示最小的积木列数目。
样例输入 1
3
0 0 10
样例输出 1
2
样例输入 2
4
0 0 0 0
样例输出 2
4
2
数据范围
30% 数据,1 ≤ n ≤ 10
60% 数据,1 ≤ n ≤ 100
80% 数据,1 ≤ n ≤ 1000
100% 数据,1 ≤ n ≤ 5000
对于所有数据点,都有 X i ≤ n

题解是贪心我是二分做的:

  

#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
int n;
int a[];
int ans,sum,deep,len;
int maxn[];
bool check(int x)
{
memset(maxn,,sizeof maxn);
int now=;sum=n;
while(sum>=x)
{
for(int i=;i<=x&&sum;i++,sum--)
{
if(maxn[i]==) return ;
maxn[i]=min(maxn[i]-,a[sum]);
}
}
for(int i=;i<=x&&sum;i++,sum--)
{
if(maxn[i]==) return ;
maxn[i]=max(maxn[i]-,a[sum]);
}
return ;
}
int main()
{
freopen("box.in","r",stdin);
freopen("box.out","w",stdout);
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
sort(a+,a++n);
int L=,R=n,mid;
while(L<R)
{
mid=(L+R)>>;
if(check(mid)) R=mid;
else L=mid+;
}
cout<<L;
return ;
}

小G搭积木的更多相关文章

  1. 7-Java-C(搭积木)

    题目描述: 小明最近喜欢搭数字积木, 一共有10块积木,每个积木上有一个数字,0~9. 搭积木规则: 每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小. 最后搭成4层的金字塔形,必须用完 ...

  2. Leo 搭积木

    Leo 搭积木[问题描述]Leo是一个快乐的火星人,总是能和地球上的 OIers玩得很 high.2012 到了, Leo 又被召回火星了,在火星上没人陪他玩了,但是他有好多好多积木,于是他开始搭积木 ...

  3. 蓝桥杯-搭积木-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  4. codevs 3249 搭积木

    提交地址:http://codevs.cn/problem/3249/ 3249 搭积木  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目 ...

  5. [Luogu 2816]宋荣子搭积木

    Description saruka非常喜欢搭积木,他一共有n块积木.而且saruka的积木很特殊,只能一块块的竖着摞,可以摞很多列.说过saruka的是特殊的积木了,这些积木都非常智能,第i块积木有 ...

  6. 搭积木(block)

    [问题描述]小 OY 是一个喜欢搭积木的孩子,他有一天决定向小 C 展示他特别的搭积木技巧.现在一条直线上从左到右有 n 个位置,标号 1..n,第 i 个位置坐标为 x_i.每个位置上都预先叠好了一 ...

  7. 搭积木(java)-蓝桥杯

    搭积木小明最近喜欢搭数字积木,一共有10块积木,每个积木上有一个数字,0~9.搭积木规则:每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小.最后搭成4层的金字塔形,必须用完所有的积木.下 ...

  8. 整数N分解,搭积木,离散数学中的母函数,ZOJ(1163)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1163 解题报告: 将整数N分解为:两个及以上的不重复的整数,最流 ...

  9. codevs3249搭积木

    3249 搭积木  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description Petya有一个A×B×C的长方体积木,积 ...

随机推荐

  1. BZOJ_3124_[Sdoi2013]直径_树形DP

    BZOJ_3124_[Sdoi2013]直径_树形DP Description 小Q最近学习了一些图论知识.根据课本,有如下定义.树:无回路且连通的无向图,每条边都有正整数的权值来表示其长度.如果一棵 ...

  2. ACM学习历程—Hihocoder 1178 计数(位运算 && set容器)(hihoCoder挑战赛12)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB   描述 Rowdark是一个邪恶的魔法师.在他阅读大巫术师Lich的传记时,他发现一类黑魔法来召唤远古生物,鱼丸. 魔法n能召 ...

  3. Linux的学习思路

    自学嵌入式确实不大现实(当然也不是说没有这个可能),毕竟嵌入式难度也是比较大的. 嵌入式的应用主要是几个方向, 一是系统开发:侧重开发环境搭建.内核原理.交叉编译等: 二是嵌入式Linux应用开发:侧 ...

  4. matlab形态学图像处理之strel函数

    转自:http://blog.sina.com.cn/s/blog_b1cd5d330101pmwi.html strel--structuring element 运用各种形状和大小构造元素,基本语 ...

  5. JS---计算两个日期之间相差多少天

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  6. MySQL写入中文乱码

    这点确实很迷,我的数据库属性确实设置了utf-8字符集,但写入中文还是乱码,后来是直接修改了全局配置才修改过来. 1.进入MySQL的本地安装路径,我的安装路径是"C:\Program Fi ...

  7. 2018年第九届蓝桥杯国赛试题(JavaA组)

    1.结果填空 (满分13分)2.结果填空 (满分39分)3.代码填空 (满分27分)4.程序设计(满分45分)5.程序设计(满分71分)6.程序设计(满分105分) 1.标题:三角形面积 已知三角形三 ...

  8. [小工具] C#多线程|匿名委托传参数|测试网站压力--升级版

    上次文章链接:http://www.sufeinet.com/thread-11-1-1.html写这些并不是不会用测试工具,也并不是无视测试工具,而是做为一个程序员希望用自己写的东西来完成一些功能, ...

  9. 编写BeanFactory

    /** * 一个创建Bean对象的工厂 * * Bean:在计算机英语中,有可重用组件的含义. * JavaBean:用java语言编写的可重用组件. * javabean > 实体类 * * ...

  10. css需要注意的地方

    如果一个元素设置了postion:abslute;top:20;botoom:20因为设置了top又设置了botoom所以元素会有高度.