zoukankan      html  css  js  c++  java
  • CCF 201312-3 最大的矩形

    试题编号: 201312-3
    试题名称: 最大的矩形
    时间限制: 1.0s
    内存限制: 256.0MB
    问题描述:
    问题描述
      在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi。这n个矩形构成了一个直方图。例如,下图中六个矩形的高度就分别是3, 1, 6, 5, 2, 3。



      请找出能放在给定直方图里面积最大的矩形,它的边要与坐标轴平行。对于上面给出的例子,最大矩形如下图所示的阴影部分,面积是10。
    输入格式
      第一行包含一个整数n,即矩形的数量(1 ≤ n ≤ 1000)。
      第二行包含n 个整数h1, h2, … , hn,相邻的数之间由空格分隔。(1 ≤ hi ≤ 10000)。hi是第i个矩形的高度。
    输出格式
      输出一行,包含一个整数,即给定直方图内的最大矩形的面积。
    样例输入
    6
    3 1 6 5 2 3
    样例输出
    10

    关键词:map

     1 #include<iostream>
     2 #include<map>
     3 #include<algorithm>
     4 using namespace std;
     5 int main(){
     6     //freopen("in2.txt","r",stdin);
     7     int gn = 0;
     8     cin >> gn;
     9     map<int,int> ma;
    10     for(int i = 0;i<gn;i++){
    11         int buf = 0;
    12         cin >> buf;
    13         ma[i] = buf;
    14     }
    15     int gmax = 0;
    16     for(map<int,int>::iterator itm = ma.begin();itm != ma.end();itm++){
    17         int high = itm->second;
    18         int maxlen = 0;
    19         int len = 0;
    20         for(int j = 0;j<gn;j++){
    21             if(ma[j] >= high){
    22                 len++;
    23                 if(len>maxlen){
    24                     maxlen = len;
    25                 }
    26             }
    27             else{
    28                 len = 0;
    29             }
    30         }
    31         gmax = max(gmax,high*maxlen);
    32     }
    33     cout << gmax << endl;
    34     return 0;
    35 }
  • 相关阅读:
    linux中按行读取指定行
    linux常用配置文件
    linux虚拟机设置网络
    jenkins新建一个robot脚本的job
    jenkins中配置邮件发送
    jenkins中robot framework插件安装
    Jenkins subversion svn插件安装失败
    jenkins节点启动
    {"non_field_errors":["Unable to log in with provided credentials."]}% 无法使用提供的凭据登录
    路径模板
  • 原文地址:https://www.cnblogs.com/ywsswy/p/7667343.html
Copyright © 2011-2022 走看看