uva 1442 Cav(左右各扫描一次)
来源:互联网 发布:工控 java 编辑:程序博客网 时间:2024/05/17 20:35
题目大意:一个洞穴的宽度为n(n<=10^6)个片段组成。第i处的地面高度为pi,顶高度为si(0=<pi<si<=1000),要求在洞中存放尽量多的燃料(液体),使得燃料的位置不会碰到顶,但可以无限接近。
方法:设每个片段中燃料的高度为l,初始值为是s[0]或s[n-1],如果当前片段的地面高度pi>l,则l=pi,顶高度si<l,则l=si,把每个片段的l存在数组中。从右往左扫一遍,再从左往右扫一遍,最后用片段中较小的l减去pi即该片段的燃料,所有相加,即为所求。
AC代码:
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>#include<queue>#include<set>using namespace std;int p[1000005],s[1000005],a[1000005],b[1000005];int main(){ int t,i,ans,l,n; cin>>t; while(t--) { cin>>n; for(i=0;i<n;i++) { cin>>p[i]; } for(i=0;i<n;i++) { cin>>s[i]; } l=s[0]; for(i=0;i<n;i++) { if(l<p[i]) { l=p[i]; } if(l>s[i]) { l=s[i]; } a[i]=l; } l=s[n-1]; for(i=n-1;i>=0;i--) { if(l<p[i]) { l=p[i]; } if(l>s[i]) { l=s[i]; } b[i]=l; } ans=0; for(i=0;i<n;i++) { ans+=min(a[i],b[i])-p[i]; } cout<<ans<<endl; } return 0;}
0 0
- uva 1442 Cav(左右各扫描一次)
- uva 1442 - Cav(贪心)
- UVa 1442:Cav(杂题)
- 1442 - Cav(扫描+推理)
- UVA - 1442 Cav
- UVa OJ 1442 - Cav
- UVA-1442 Cav
- uva - 1442(cav 递推类 ,思路)
- Cav UVA
- Cav UVA
- 1442 - Cav
- 1442 - Cav
- CERC 2009 Cav 扫描法 (uvaLive 4621 - Cav)
- Cav
- Uva 1442 扫描法
- uva 11983 Weird Advertisement(扫描线)
- Uva 11054 洒交易(扫描法)
- UVa 1468 - Restaurant(贪心 + 扫描)
- hdu 1853 Cyclic Tour 最小费用最大流
- Composite 组合
- Java工程导入(感叹号)错误提示
- Xcode的快捷键及代码格式化
- OverlayIcon 制作流程及注意项
- uva 1442 Cav(左右各扫描一次)
- odoo8使用onchange改变one2many类型的值
- LeetCode 题解(72): Container With Most Water
- 如何使用Eclipse编写运行Java程序
- VS下控制台运行保持(不要一闪而过)
- 马云:为什么当新的商机来临时,大多数人会“死”在别人的嘴里
- 阿里巴巴微商城加盟---微信号:aqiu558
- 马云入股德邦基金 激活了百大集团?
- 王健林马云齐啖保险"香饽饽"