码迷,mamicode.com
首页 > 其他好文 > 详细

洛谷 P1318 积水面积

时间:2017-09-06 20:18:15      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:pre   eve   col   isp   这一   als   return   clu   inline   

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 积水面积

标签:pre   eve   col   isp   这一   als   return   clu   inline   

原文地址:http://www.cnblogs.com/chen74123/p/7486671.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!