UVA1442_Cave
2015-09-10 03:46
309 查看
Cave
大致题意:
一个洞穴,已经i位置地面高度和顶的高度,要求在这个洞穴里面储蓄尽可能多的燃料,而且任何位置燃料不能碰到顶点
思路:
先从左往右扫描一下得出每一个点燃料能达到的最大高度,然后右边一样扫一遍,两个取最小值,然后累加
看起来很简单,可是实践起来很麻烦,需要讨论好不同条件下的最大高度!!!!
首先我们假设一个位置左端的最大高度为h
那么i+1位置地面高度p,顶点高度是s.
如果p>h,说明燃料被阻断!!!i+1位置上最大高度为自己!!!
如果s<h,说明当前最大高度还是h
如果p<h,最大高度和之前相同
反正扫描一下,就好了,这样充分保证了一个点左右均合法了!!!!
这个和以前遇到的最大长方形面积很相似
大致题意:
一个洞穴,已经i位置地面高度和顶的高度,要求在这个洞穴里面储蓄尽可能多的燃料,而且任何位置燃料不能碰到顶点
思路:
先从左往右扫描一下得出每一个点燃料能达到的最大高度,然后右边一样扫一遍,两个取最小值,然后累加
看起来很简单,可是实践起来很麻烦,需要讨论好不同条件下的最大高度!!!!
首先我们假设一个位置左端的最大高度为h
那么i+1位置地面高度p,顶点高度是s.
如果p>h,说明燃料被阻断!!!i+1位置上最大高度为自己!!!
如果s<h,说明当前最大高度还是h
如果p<h,最大高度和之前相同
反正扫描一下,就好了,这样充分保证了一个点左右均合法了!!!!
这个和以前遇到的最大长方形面积很相似
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<string> #include<queue> #include<cstdlib> #include<algorithm> #include<stack> #include<map> #include<queue> #include<vector> using namespace std; const int maxn = 1e6+100; #define pr(x) cout << #x << " = " << x << " "; #define prln(x) cout << #x << " = " << x <<endl; #define ll long long int p[maxn], s[maxn], h[maxn], lev, ans, n; int main(){ #ifdef LOCAL freopen("C:\\Users\\User Soft\\Desktop\\in.txt","r",stdin); //freopen("C:\\Users\\User Soft\\Desktop\\out.txt","w",stdout); #endif int t; cin >> t; while(t--) { cin >> n; ans = 0; for(int i = 0; i < n; ++i) scanf("%d", p +i); for(int i = 0; i < n; ++i) scanf("%d", s +i); lev = s[0]; for(int i = 0; i < n; ++i) { if(lev < p[i]) lev = p[i]; if(lev > s[i]) lev = s[i]; h[i] = lev; } lev = s[n-1]; for(int i = n-1; i >= 0; --i) { if(lev < p[i]) lev = p[i]; if(lev > s[i]) lev = s[i]; ans += min(lev, h[i]) - p[i]; } cout << ans << endl; } return 0; }
相关文章推荐
- spring mvc的图片上传与显示
- linux sar命令详解
- 智能摄像机是个坑——FOSCAM IQ摄像机功能评测
- [LeetCode] Remove Duplicates from Sorted List - 链表问题
- iostat 监视I/O子系统
- free、vmstat监视内存使用情况
- sar 找出系统瓶颈的利器
- Mono
- python 笔记1--基础类型
- python 笔记1--基础类型
- UVA1608_Non-boring sequences
- CLR
- Leetcode Remove Linked List Elements
- UVA12174_Shuffle
- 2015苹果发布会观后感
- autoreleasepool
- 苹果秋季发布会~
- 反射
- Minimum Size Subarray Sum
- select取值问题