UVA1442 Cave
2016-01-19 20:05
239 查看
题解:
从左往右扫描,初始时设水位level=s[0],然后依次判断各个位置[i,i+1]处的高度
1. 如果p[i] > level,说明水被隔绝了,需要把level提升到pi
2. 如果s[i] < level,说明水位太高,碰到天花板,需要把level降低到si
3. 位置[i,i+1]处的水位就是扫描到位置i时的level
代码
#include <cstdio> #include <queue> #include <cstring> #include <iostream> #include <cstdlib> #include <algorithm> #include <vector> #include <map> #include <string> #include <set> #include <ctime> #include <cmath> #include <cctype> using namespace std; #define maxn 100000 #define LL long long int cas=1,T; int p[1000005]; int s[1000005]; int h[1000005]; int main() { scanf("%d",&T); while (T--) { int n; scanf("%d",&n); for (int i = 0;i<n;i++) scanf("%d",&p[i]); for (int i = 0;i<n;i++) scanf("%d",&s[i]); int level = s[0]; for (int i = 0;i<n;i++) { if (level>s[i]) level = s[i]; if (level < p[i]) level = p[i]; h[i]=level; } level = s[n-1]; int ans =0; for (int i = n-1;i>=0;i--) { if (level >s[i]) level = s[i]; if (level < p[i]) level = p[i]; ans+=min(level,h[i])-p[i]; } printf("%d\n",ans); } return 0; }
相关文章推荐
- display:inline-block的坑
- Qt5实现打地鼠
- 数组、指针、字符串
- XHR——XMLHttpRequest对象
- Codeforces 196 C. Paint Tree
- JavaSE-==和equals()
- HDU 4869 Turn the pokers(思维+组合公式+高速幂)
- 通过/proc/net/dev分析网络包量,流量,错包,丢包
- 四大组件-----Service的后台下载(三)
- 浅谈Java类的实例化
- Netty-Mina深入学习与对比
- [转载]TFS与Project、Excel同步
- 记录一次Quartz2D学习(二)
- makefile静态库 动态库
- P20 (*) Remove the K'th element from a list.
- hdu2868 Neighbor Friend
- P20 (*) Remove the K'th element from a list.
- Java中的static详解
- 偷来一波正则表达式
- Androidx学习笔记(6)--常见布局--线性布局