洛谷 P1318 积水面积

Posted Alex丶Baker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了洛谷 P1318 积水面积相关的知识,希望对你有一定的参考价值。

P1318 积水面积

将每层可积水的面积加起来

每层可积水的面积=左边第一个比他大右边的所有空位+右边第一个比他大的左边的所有空位-这一层的所有空位(他指当前高度

技术分享
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define maxn 1000000
 4 
 5 int n,h[maxn],tot,maxx;
 6 int l[maxn],r[maxn],ans;
 7 bool if_;
 8 char ch;
 9 inline void read(int &now)
10 {
11     ch=getchar(); now=0;
12     while(ch>9||ch<0) ch=getchar();
13     while(ch>=0&&ch<=9) now=now*10+ch-0,ch=getchar();
14 }
15 
16 int main()
17 {
18     read(n);
19     for(int i=1;i<=n;i++) read(h[i]),maxx=max(maxx,h[i]);
20     for(int k=maxx;k>=1;k--)
21     {
22         int s=0;
23         if_=false;
24         for(int i=1;i<=n;i++)
25         {
26             if(if_==false)
27             {
28                 if(h[i]>=k) if_=true;
29                 else if(h[i]<k) s--;
30             }
31         }
32         if_=false;
33         for(int i=n;i>=1;i--)
34         {
35             if(if_==false)
36             {
37                 if(h[i]>=k) if_=true;
38                 else if(h[i]<k) s--;
39             }
40         }
41         for(int i=1;i<=n;i++)
42             if(h[i]<k) s++;
43         ans+=s;
44     }
45     printf("%d\n",ans);
46     return 0;
47 }
View Code

 

以上是关于洛谷 P1318 积水面积的主要内容,如果未能解决你的问题,请参考以下文章

洛谷 P1318 积水面积题解

积水面积

Day8 栈的使用--计算面积 接雨水

Day8 栈的使用--计算面积 接雨水

House Building---hdu5538(求表面积水题)

洛谷题解P4326 求圆的面积