uva10366 Faucet Flow
每次找到两边离中心最高的板,如果等,再找外围的最高版...
画图便于理解
两边先找到距离(-1,1)最近的最大值L和R,因为可能存在多个最高的挡板。
接着比较两个L和R的大小,相等的话分别分析两边,取最小值
注意L和R一边高的话两边都会流,所以这块的时间要乘2。
比如分析右边,从最外围开始,顶部画平行线往内部走,就发现分成了几个区间,加起来就可以了。
L,R不等的话,(这里出现了一个坑),高的那边可能有比低的那边高的其他边;然后又有一个坑,可能找到的边和低的那个边等高
#include <cstdio>
#include <cstring>
#include <algorithm> using namespace std; const int N = ;
int l, r, x[N], y[N];
int L, R, idl, idr; void read() {
R = L = ;
for (int i = l; i <= r; i += ) {
if (i < ) {
scanf("%d", &x[(-i)/]);
if (L <= x[(-i)/]) {
L = x[(-i)/]; idl = (-i)/;
}
}
else {
scanf("%d", &y[i/]);
if (R < y[i/]) {
R = y[i/]; idr = i/;
}
}
}
return ;
} int solve() {
l = (-l) / ; r = r / ;
int tmp;
if (R == L) {
int k = , t = ;
tmp = x[l];
for (int i = l; i > idl; i--) {
k += tmp; tmp = max(tmp, x[i-]);
}
tmp = y[r];
for (int i = r; i > idr; i--) {
t += tmp; tmp = max(tmp, y[i-]);
} return (idl + idr + ) * R * + min(k, t) * * ;//*2*2因为要从中间分开流
} else {
int T = min(R, L);
int p = , q = , k = , t = ;
while (p < l && x[p] < T) p++;
while (q < r && y[q] < T) q++; if (R > L) {
tmp = y[q];
for (int i = q; y[i] <= L; i++) {
k += tmp; tmp = max(tmp, y[i+]);
}
tmp = x[l];
for (int i = l; i > p; i--) {
t += tmp; tmp = max(tmp, x[i-]);
} } else {
tmp = x[p];
for (int i = p; x[i] <= R; i++) {
k += tmp; tmp = max(tmp, x[i+]); //k是从另一边流(如果开始找到的边高度等于T),直到遇到高于T的
}
tmp = y[r];
for (int i = r; i > q; i--) {
t += tmp; tmp = max(tmp, y[i-]);
}
}
int ans = t> k ? t + k : * t; //t<k,说明确实要分开流,从T那边流走的时间;t>k,(总体积2*k+2*k+2*(t-k))
return ans * + (p + q + ) * T * ;
}
} int main() {
while (scanf("%d%d", &l, &r) == && l && r) {
read();
printf("%d\n", solve());
}
return ;
}
uva10366 Faucet Flow的更多相关文章
- uva 10366 Faucet Flow
题意: 给出l和r,然后从l坐标到r坐标每隔两个位置有一个档板,给出挡板的高度,然后想(-1, 1)中间加水,问什么时候会溢出. 分析: 两边先找到距离(-1,1)最近的最大值L和R.接着比较两个L和 ...
- 一位学长的ACM总结(感触颇深)
发信人: fennec (fennec), 信区: Algorithm 标 题: acm 总结 by fennec 发信站: 吉林大学牡丹园站 (Wed Dec 8 16:27:55 2004) AC ...
- HOJ题目分类
各种杂题,水题,模拟,包括简单数论. 1001 A+B 1002 A+B+C 1009 Fat Cat 1010 The Angle 1011 Unix ls 1012 Decoding Task 1 ...
- Git 在团队中的最佳实践--如何正确使用Git Flow
我们已经从SVN 切换到Git很多年了,现在几乎所有的项目都在使用Github管理, 本篇文章讲一下为什么使用Git, 以及如何在团队中正确使用. Git的优点 Git的优点很多,但是这里只列出我认为 ...
- [LeetCode] Pacific Atlantic Water Flow 太平洋大西洋水流
Given an m x n matrix of non-negative integers representing the height of each unit cell in a contin ...
- BZOJ 4390: [Usaco2015 dec]Max Flow
4390: [Usaco2015 dec]Max Flow Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 177 Solved: 113[Submi ...
- ArcGIS制作放射状流向地图(Radial Flow Map)
流向地图火了,因为Facebook的那张著名的友邻图,抑或因为<数据可视化之美>中介绍飞行模式的航线图,总之,流向地图以它特殊的可视化形式,直观地展示事物之间的联系,尤其在展示网络流向.贸 ...
- SSIS Data Flow优化
一,数据流设计优化 数据流有两个特性:流和在内存缓冲区中处理数据,根据数据流的这两个特性,对数据流进行优化. 1,流,同时对数据进行提取,转换和加载操作 流,就是在source提取数据时,转换组件处理 ...
- Data Flow的Error Output
一,在Data Flow Task中,对于Error Row的处理通过Error Output Tab配置的. 1,操作失败的类型:Error(Conversion) 和 Truncation. 2, ...
随机推荐
- OCCI编程接口介绍
OCCI简介 Oracle® C++ Call Interface (OCCI) 是一套应用程序编程接口,它允许C++程序与一个或者多个Oracle数据库进行交互.OCCI给予你强大的数据库操作能力, ...
- 状态保存机制之ViewState概述及应用
状态保存机制之ViewState概述及应用 作者: 字体:[增加 减小] 类型:转载 无状态的根本原因是:浏览器和服务器使用Socket通信,服务器将请求结果返回给浏览器后,会关闭当前Socket ...
- Sublime text 安装Package Control
Package Control 插件是一个方便 Sublime text 管理插件的插件,但因为 Sublime Text 3 更新了 Python 的函数,API不同了,导致基于 Python 开发 ...
- HTML中的align和valign这两个属性
转自:https://www.douban.com/note/325833958/ align和valign属性均是规定表格相对于周围元素的对齐方式,区别就在于: 1.align属性趋向于左右对齐,其 ...
- linux下sprintf_s函数的替代(转载)
转自:http://www.cnblogs.com/yeahgis/archive/2013/01/22/2872179.html windows平台下线程安全的格式化字符串函数sprint_s并非标 ...
- 878. Nth Magical Number
A positive integer is magical if it is divisible by either A or B. Return the N-th magical number. ...
- poj3617【贪心】
题意: 给定长度为N的字符串S,要构造一个长度为N的字符串T串. 从S的头部删除一个字符,加到T的尾部 从S的尾部删除一个字符,加到T的尾部 目标是构造字典序尽可能小的字符串. 思路: 贪心,每次取小 ...
- bzoj 3027: [Ceoi2004]Sweet【生成函数+组合数学】
首先根据生成函数的套路,这个可以写成: \[ \prod_{i=1}^{n}(1+x^1+x^2+...+x^{c[i]}) \] 然后化简 \[ =\prod_{i=1}^{n}\frac{1-x^ ...
- EditPlus 3:设置自动换行
打开软件,菜单栏点击Document,再在下拉栏中点击Permanent Settings,然后在弹出的设置框中找到Word Wrap点击,最后在弹出的小框中勾选第一个Enable word wrap ...
- 跟我一起玩Win32开发(10):绘图(C)
今天我们来欣赏一下用于填充图形的函数,当然我不会逐个去介绍,因为我们参考MSDN直接套参数就可以了. SetDCBrushColor函数有必要扯一下,它的声明如下: COLORREF SetDCBru ...