题意:

  给出l和r,然后从l坐标到r坐标每隔两个位置有一个档板,给出挡板的高度,然后想(-1, 1)中间加水,问什么时候会溢出。

分析:

  两边先找到距离(-1,1)最近的最大值L和R。接着比较两个L和R的大小,相等的话就可以比较(-l,L的下标)和(R的下标,r)两块的大小,所以这块的时间要乘2。如果两边不一般高的话,找到高的一边第一个比另一边最高的那个高的p,然后比较a = ( p,Max(R,L)的下标)和b = (Min(R,L)的下标,end)的大小,然后决定是2*b还是a+b。细节各种烦人。

代码:

  

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int maxn=1005;
int l,r,x[maxn],y[maxn];
int L,R,idl,idr;
int pai(int a,int b)
{
if(a<=b)
return 2*a;
else
return a+b;
}
int solve()
{
int i;
l=(-l)/2;
r=r/2;
if(R==L)
{
int k=0,t=0;
int tmp=x[l];
for(i=l;i>idl;i--)
{
k+=tmp;
tmp=max(tmp,x[i-1]);
}
tmp=y[r];
for(i=r;i>idr;i--)
{
t+=tmp;
tmp=max(tmp,y[i-1]);
}
return (idl+idr+1)*R*2 +min(k,t)*2*2;
}
else
{
int T=min(R,L);
int p,q,k,t;
p=q=k=t=0;
while(p<l&&x[p]<T)
p++;
while(q<r&&y[q]<T)
q++;
if(R>L)
{
int tmp=y[q];
for(i=q;y[i]<=L;i++)
{
k+=tmp;
tmp=max(tmp,x[i-1]);
}
tmp=x[l];
for(i=l;i>p;i--)
{
t+=tmp;
tmp=max(tmp,x[i-1]);
}
}
else
{
int tmp=x[q];
for(i=p;x[i]<=R;i++)
{
k+=tmp;
tmp=max(tmp,x[i+1]);
}
tmp=y[r];
for(i=r;i>q;i--)
{
t+=tmp;
tmp=max(tmp,y[i-1]);
}
}
int ans=t>k?t+k:2*t;
return ans*2+(p+q+1)*T*2;
}
}
int main()
{
while(scanf("%d%d",&l,&r)!=EOF&&l&&r)
{
int i;
R=L=0;
for(i=l;i<=r;i+=2)
{
if(i<0)
{
scanf("%d",&x[(-i)/2]);
if(L<=x[(-i)/2])
{
L=x[(-i)/2];
idl=(-i)/2;
}
}
else
{
scanf("%d", &y[i/2]);
if(R<y[i/2])
{
R=y[i/2];
idr=i/2;
}
}
}
printf("%d\n",solve());
}
}
 

uva 10366 Faucet Flow的更多相关文章

  1. UVA 10594 Data Flow

    无向图费用流 还有一段话摘自别人博客 这道题是无向图的最小费用最大流问题,看清楚是无向图的.这么说无向图和有向图的费用流问题有什么区别呢?主要是反向边的问题.首先我们说一下最大流问题中的反向边,我们需 ...

  2. uva10366 Faucet Flow

    每次找到两边离中心最高的板,如果等,再找外围的最高版...画图便于理解两边先找到距离(-1,1)最近的最大值L和R,因为可能存在多个最高的挡板.接着比较两个L和R的大小,相等的话分别分析两边,取最小值 ...

  3. 紫书 习题 8-24 UVa 10366 (构造法)

    又是一道非常复杂的构造法-- #include<cstdio> #include<algorithm> #define REP(i, a, b) for(int i = (a) ...

  4. 一位学长的ACM总结(感触颇深)

    发信人: fennec (fennec), 信区: Algorithm 标 题: acm 总结 by fennec 发信站: 吉林大学牡丹园站 (Wed Dec 8 16:27:55 2004) AC ...

  5. HOJ题目分类

    各种杂题,水题,模拟,包括简单数论. 1001 A+B 1002 A+B+C 1009 Fat Cat 1010 The Angle 1011 Unix ls 1012 Decoding Task 1 ...

  6. UVA 10594-Date Flow(无向图的最小费用网络流+题目给的数据有误)

    题意:给一个有N个点的无向图,要求从1向N传送一定的数据,每条边的容量是一定的,如果能做到,输出最小的费用,否则输出Impossible. 解析:由于是无向图,所以每个有连接的两个点要建4条边,分别是 ...

  7. UVA 820 --- POJ 1273 最大流

    找了好久这两个的区别...UVA820 WA了 好多次.不过以后就做模板了,可以求任意两点之间的最大流. UVA 是无向图,因此可能有重边,POJ 1273是有向图,而且是单源点求最大流,因此改模板的 ...

  8. [题解]UVa 11082 Matrix Decompressing

    开始眨眼一看怎么也不像是网络流的一道题,再怎么看也觉得像是搜索.不过虽然这道题数据范围很小,但也不至于搜索也是可以随随便便就可以过的.(不过这道题应该是special judge,因为一题可以多解而且 ...

  9. UVA 10779 (最大流)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=33631 题目大意:Bob有一些贴纸,他可以和别人交换,他可以把自己 ...

随机推荐

  1. Linux下的压缩zip,解压缩unzip命令具体解释及实例

    实例:压缩server上当前文件夹的内容为xxx.zip文件 zip -r xxx.zip ./* 解压zip文件到当前文件夹 unzip filename.zip ================= ...

  2. 关于mysql binlog日志的格式说明

    Binary Log 记录方式 Row Level Binary Log会记录成每一行数据被修改的形式,然后在Slave端再对相同的数据进行修改. 如果修改了表的结构,那么binlog日志记录的是重新 ...

  3. C# 单例模式(转)

    C#设计模式学习笔记-单例模式 最近在学设计模式,学到创建型模式的时候,碰到单例模式(或叫单件模式),现在整理一下笔记. 在<Design Patterns:Elements of Resuab ...

  4. 全分布式环境下,DataNode不启动的问题解决

    问题出现:机器重启之后,再次在master结点上面执行start-all.sh,发现有一个datanode没有启动,通过jps检查之后,发现slave1上面的datanode进程未启动 原因:每次na ...

  5. SQL Server服务启动失败,错误代码:10048

    今天打开电脑后遇到了一个奇葩的问题,启动Sql Server服务时,出现如下图所示错误:

  6. Graham算法—二维点集VC++实现

    一.凸包定义 通俗的说就是:一组平面上的点,求一个包含所有点的最小凸多边形,这个最小凸多边形就是凸包. 二.Graham算法思想 概要:Graham算法的主要思想就是,最终形成的凸包,即包围所有点的凸 ...

  7. JS 之 innerHTML

    定义和用法 innerHTML 属性用于设置或返回指定标签之间的 HTML 内容. 语法 Object.innerHTML = "HTML";// 设置 var html = Ob ...

  8. (原)java中opencv的width的问题

    调试程序,我这边负责在JNI中将缓冲区中的数据转换成bitmp.测试时用320*240的图像测试正常,但是别人使用的图像宽度为270时,图像出现了错位(没截图,不好理解). 首先想到的是opencv的 ...

  9. (原)STL中vector的疑问

    以前基本上没有用过STL,当然包括里面的vector.今天试验了一下. 主要看了这个网址: http://blog.csdn.net/phoebin/article/details/3864590 代 ...

  10. jQuery 获取 多个 复选框 和 javascript 对比

    $('input[name="teams"]:checked').size() // 全选 $("#quanteam").bind("click&qu ...