UVa 1442:Cav(杂题)
来源:互联网 发布:泰国q10牛奶洗面奶知乎 编辑:程序博客网 时间:2024/05/18 03:37
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=844&page=show_problem&problem=4188
题意:一个洞穴的宽度为n
(n≤106) 个片段组成。已知位置[i,i+1] 处的地面高度pi 和顶的高度si(0≤pi<si≤1000) ,要求在这个洞穴里储存尽量多的燃料,使得在任何位置燃料都不会碰到顶(但是可以无限接近),如图所示。对于该图的例子,最多可以存储21单位的燃料。(本段摘自《算法竞赛入门经典(第2版)》)
分析:
可以通过先求“向左延伸不会碰到天花板”的最大值
从左向右扫描。初始时设水位
如果
如果
位置
代码:
这#include <fstream>#include <iostream>#include <cstring>#include <algorithm>#include <stack>#include <sstream>#include <string>#include <map>#include <cmath>#include <queue>#include <vector>#include <set>#include <string>#include <vector>using namespace std;const int maxn = 1000000 + 5;int T, n, level, ans;int p[maxn], s[maxn], h1[maxn], h2[maxn];int main(){ scanf("%d", &T); for (int C = 0; C < T; ++C) { ans = 0; 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]); level = s[0]; for (int i = 0; i < n; ++i) { if (level < p[i]) level = p[i]; else if (level > s[i]) level = s[i]; h1[i] = level; } level = s[n - 1]; for (int i = n - 1; i >= 0; --i) { if (level < p[i]) level = p[i]; else if (level > s[i]) level = s[i]; h2[i] = level; } for (int i = 0; i < n; ++i) ans += min(h1[i], h2[i]) - p[i]; printf("%d\n", ans); } return 0;}
0 0
- UVa 1442:Cav(杂题)
- uva 1442 - Cav(贪心)
- UVA - 1442 Cav
- UVa OJ 1442 - Cav
- UVA-1442 Cav
- uva - 1442(cav 递推类 ,思路)
- uva 1442 Cav(左右各扫描一次)
- Cav UVA
- Cav UVA
- 1442 - Cav
- 1442 - Cav
- 1442 - Cav(扫描+推理)
- Cav
- LA4621 Cav
- UVALive - 4621 Cav
- CERC 2009 Cav 扫描法 (uvaLive 4621 - Cav)
- UVALive - 4621 Cav 贪心 + 分析
- UVA 11261 - Bishops(杂题)
- 嵌入式单板计算机连接方式
- 预测的原理及其实战(3)
- python zerorpc分布式框架
- 《剑指Offer》:删除在另一个字符串中出现的字符
- 各个iframe内获取值,互相调用方法测试
- UVa 1442:Cav(杂题)
- 注解(Annotation)方法的MyBatis
- java枚举类型的实现原理
- bootstrap常用功能快速入门以及常见问题解决方案
- Python 守护进程 例子
- 【Android UI设计与开发】第05期:引导界面(五)实现应用程序只启动一次引导界面
- C++的头文件和实现文件分别写什么
- USACO 1.2 Name That Number
- 全志A20 wifi驱动移植