广东工业大学网络赛E题 思维题
2016-04-17 21:09
260 查看
Problem E: 积木积水
Description
现有一堆边长为1的已经放置好的积木,小明(对的,你没看错,的确是陪伴我们成长的那个小明)想知道当下雨天来时会有多少积水。小明又是如此地喜欢二次元,于是他把这个三维的现实问题简化成二维的问题。设雨量无穷、积木不透水、积木间无缝连接,问在这个二次元的世界里,已放置好的积木会有多少单位的积水量?Input
第一行包含一个整数T(T≤100),表示接下来的测试样例个数。 每个测试样例有两行组成: 第一行包含一个整数N(N≤1e6),表示积木的列数; 第二行包含N个整数Ai(Ai≤1e6),表示第i列积木的个数。Output
每个样例输出一行,包含一个整数,为题目所求。Sample Input
111
6 2 2 4 2 0 3 4 4 5 1
Sample Output
19HINT
题意: 求积木会积多少水.分析: 我们可以从左到右, 对于每一个积木, 求他左右两边的最高的积木中小的一个, 就是这个积木会积水的量. 遍历每一个统计总值就行了.
#include<bitset> #include<map> #include<vector> #include<cstdio> #include<iostream> #include<cstring> #include<string> #include<algorithm> #include<cmath> #include<stack> #include<queue> #include<set> #define inf 0x3f3f3f3f #define mem(a,x) memset(a,x,sizeof(a)) #define F first #define S second using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair<int,int> pii; inline int in() { int res=0;char c;int f=1; while((c=getchar())<'0' || c>'9')if(c=='-')f=-1; while(c>='0' && c<='9')res=res*10+c-'0',c=getchar(); return res*f; } const int N=1000010,MOD=1e9+7; int a ,l ,r ; int main() { int T=in(); while(T--) { int n=in(); for(int i=1;i<=n;i++) { a[i]=in(); } l[0]=0; for(int i=1;i<=n;i++) { l[i]=max(l[i-1],a[i]); } r[n+1]=0; for(int i=n;i;i--) { r[i]=max(r[i+1],a[i]); } ll tot=0; for(int i=2;i<n;i++) { tot += max(min(l[i-1],r[i+1])-a[i],0); } printf("%lld\n",tot); } return 0; }
相关文章推荐
- 一次完整的HTTP请求所经历的7个步骤(前三步是浏览器工作,后四步是服务器工作)
- CentOS 7.0系统安装配置步骤及网络开启配置详解
- HTTP数据包头解析(简单清楚)
- Http请求工具实例编写(超长,比较清楚)
- 学习信息资源管理和计算机网络有感
- 计算机网络中的一些概念
- 《Deep Learning》译文 第一章 前言(中) 神经网络的变迁与称谓的更迭
- 关于Android:http.conn.httpHostconnectException错误
- 各个网络协议汇总(01)
- Linux网络协议栈之TCP send/recv
- android studio 网络定位城市名称
- 常用的HTTP状态代码
- Jersey(1.19.1) - Client API, Security with Http(s)URLConnection
- UFLDL 笔记 01 神经网络
- 作业——在线学习Android课程之第七周(HttpURLConnection)
- php面试题之三——PHP网络编程(高级部分)
- HttpClient请求数据的封装
- C/C++网络编程大文件循环传输
- HTTP协议概述
- 无网络或无线网络情况下本地主机连接虚拟机