zoukankan      html  css  js  c++  java
  • SSL 1579——泽泽在英国

    Description

      泽泽用了100000000000000000000 mod 10天的时间爬出了长城。长城的另一端是一条隧道,泽泽走了进去……
      泽泽不小心又到了英国。英国多雨,基本上隔2天就要下一场雨。泽泽人品不好,到这里的时候天正在下酸雨。
      酸雨会腐蚀建筑物,让那些建筑物显得很难看。英国有家工厂免费为一条街道的建筑物的墙面涂油漆。心肠虽好,但是由于技术问题,他们只能涂出一个矩形。现在由于酸雨事态严重,街道办主任下命令涂出面积最大的矩形。
    街道上的建筑物高度参差不齐,那该怎么办呢?
      他们想到了泽泽。
      泽泽接到了这个任务,就去测量了这个街道上的所有建筑物的高度。
      请根据泽泽的数据,计算出最大面积。

    Input

    第1行1个整数n。表示有几幢楼。
    之后的一行有n个整数,表示第几幢楼的高度,最高的楼的高度为m。

    Output

    一个整数,制作防护板的最大面积。

    Sample Input

    20
    5 3 7 4 8 9 2 4 5 5 5 4 4 4 8 7 4 4 5 10
    Sample Output

    52
    题目提示
    最大面积为如图灰色部分所示 :
    这里写图片描述

    Hint

    对于30%的数据,n<=100,m<=20
    对于100%的数据,n<=100000,m<=50


    我们可以用m找到最高的高度
    然后,两个循环。
    1<=i<=m
    1<=j<=n
    然后我们搜a[j]是否大于等于i,是则s:=s+1;否则为0
    最后判断s*i>x,更新最大值。


    代码如下:

    var a:array[1..100000]of longint;
        n,i,j,x,s,m:longint;
    begin
      read(n);
      for i:=1 to n do
      begin
        read(a[i]);
        if a[i]>m then m:=a[i];
      end;
    
      for i:=1 to m do
      begin
        s:=0;
        for j:=1 to n do
        begin
          if a[j]>=i then s:=s+1 else s:=0;
          if s*i>x then x:=s*i;
        end;
      end;
      write(x);
    end.
  • 相关阅读:
    zpf 视图
    html5本地存储
    sqlite 使用记录
    百度开放平台
    PHP exit() 输出
    yum笔记
    手动编译安装软件
    while循环
    linux下面测试网络带宽 (转载)
    软件包管理器的核心功能(笔记)
  • 原文地址:https://www.cnblogs.com/Comfortable/p/8412382.html
Copyright © 2011-2022 走看看