uva - 1442(cav 递推类 ,思路)
2015-03-11 19:23
316 查看
由于燃料为流动性物质。
所以利用任意一个有水的地方往左右延伸其水平面一样高,
可以先从左以尽量高的起点往前延伸遇到顶,下降到顶。遇到地面,上升到与地面同高度。
这样再从右往左贪心一边去每个点的最小值即可。
所以利用任意一个有水的地方往左右延伸其水平面一样高,
可以先从左以尽量高的起点往前延伸遇到顶,下降到顶。遇到地面,上升到与地面同高度。
这样再从右往左贪心一边去每个点的最小值即可。
#include <set> #include <vector> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; typedef long long LL; const int maxn = 1000100; int L[maxn],R[maxn]; int n,p[maxn],s[maxn]; int main() { int T; scanf("%d",&T); while(T--){ scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&p[i]); } for(int i=1;i<=n;i++){ scanf("%d",&s[i]); } int level = s[1]; for(int i=1;i<=n;i++){ if(level<p[i]) level=p[i]; if(level>s[i]) level=s[i]; L[i] = level; // cout<<i<<" "<<level<<endl; } level = s ; for(int i=n;i>=1;i--){ if(level<p[i]) level=p[i]; if(level>s[i]) level=s[i]; R[i] = level; } int res=0; for(int i=1;i<=n;i++){ //cout<<min(L[i],R[i])<<endl; res+=min(L[i],R[i])-p[i]; } printf("%d\n",res); } return 0; }
相关文章推荐
- UVA-1442 Cav
- uva 1442 Cav(左右各扫描一次)
- UVA - 1442 Cav
- uva 1442 - Cav(贪心)
- UVa 1442:Cav(杂题)
- Cav UVA - 1442
- Cav UVA - 1442
- UVa156 复杂数据结构标准化思路
- 神奇的题(存石油的洞穴,uva 1442)
- UVA 1442(p249)----Cave
- UVAlive4097 Yungom(思路)
- UVA 12898 - And Or 与和或 (思路题)
- 【高效算法设计——双向扫描】 UVa 1442 Cave
- UVAlive 6623 Battle for Silver(暴力+思路)
- uva1442
- UVA - 1605 Building for UN (思路题)
- 我的第一个:uva12096-解题思路
- UVA 1611&& UVALive 6588 Crane (贪心思路)
- UVA1442_Cave
- UVA 11464 Even Parity (独特思路)