博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
紫书 例题8-18 UVa 1442 (扫描法)
阅读量:6936 次
发布时间:2019-06-27

本文共 757 字,大约阅读时间需要 2 分钟。

从左往右扫描一遍, 得从每个位置往右伸长不会碰到天花板的高度, 右往左一样, 取最小, 然后就是可以放“水”的高度了

#include
#include
#define REP(i, a, b) for(int i = (a); i < (b); i++)using namespace std;const int MAXN = 1123456;int p[MAXN], s[MAXN], h[MAXN], n; int main(){ int T; scanf("%d", &T); while(T--) { scanf("%d", &n); REP(i, 0, n) scanf("%d", &p[i]); REP(i, 0, n) scanf("%d", &s[i]); int level = s[0]; REP(i, 0, n) { if(p[i] > level) level = p[i]; if(s[i] < level) level = s[i]; h[i] = level; } int ans = 0; level = s[n-1]; for(int i = n - 1; i >= 0; i--) { if(p[i] > level) level = p[i]; if(s[i] < level) level = s[i]; ans += min(level, h[i]) - p[i]; } printf("%d\n", ans); } return 0;}

转载于:https://www.cnblogs.com/sugewud/p/9819583.html

你可能感兴趣的文章
MySQL与Oracle的语法区别
查看>>
基础果然要牢记(一次失败的电面)
查看>>
suds 0.4 : Python Package Index
查看>>
Oracle等待事件:NULL EVENT
查看>>
OTN中文技术论坛清净的ORACLE讨论之地
查看>>
ADFS 2.0安装设置心得
查看>>
Zend Framework学习之过滤器Zend_Filter
查看>>
ACM-ICPC Live Archive 3031 Cable TV Network
查看>>
undefined reference to 'pthread_create'
查看>>
javascript练习:8-1对象声明和实例化
查看>>
给定两个正整数(二进制形式表示)A和B,问把A变为B需要改变多少位(bit)?也就是说,整数A和B的二进制表示中有多少位是不同的?...
查看>>
hdu 1839(二分+最短路)
查看>>
oracle性能调优之ASH 活动会话的历史
查看>>
ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的 SID
查看>>
Nginx配置文件详细说明[转]
查看>>
Creating Extensible Applications With the Java Platform
查看>>
据说是月薪2W的笔试题
查看>>
SSO单点登录系列3:cas-server端配置认证方式实践
查看>>
ScrollUp – 超轻量的可定制的回到顶部 jQuery 插件
查看>>
SSH 网站制作之文件上传
查看>>