题意:

  给出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());
}
}
 

最新文章

  1. R安装包
  2. android中随着ScrollView的滑动,titleBar状态的改变
  3. linux标准daemon编写方式
  4. 关于JQUERY操作XML问题!
  5. java中MD5加密的小使用
  6. Chapter 3
  7. VHD更新命令(打补丁)
  8. PCRE兼容正则表达式函数
  9. Appium键盘操作
  10. AngularJS继续中
  11. EF5.0默认不支持DB First了?
  12. facebook marketing(市场营销) API(3)
  13. Redis 高级部分
  14. Linux设备驱动之IIO子系统——IIO框架数据读取
  15. git 命令添加整个文件夹以及文件夹下的内容
  16. ThreadPoolExcutor 线程池 异常处理 (上篇)
  17. 重写console.log的一些理解
  18. Golang的格式化输出fmt.Printf
  19. String、StringBuffer、StringBulider
  20. KL距离,Kullback-Leibler Divergence

热门文章

  1. 何为SSH协议?
  2. Go - 数组 和 切片(array、slice)
  3. Delphi 完整的Bug决议工具EurekaLog的使用
  4. Swift 懒加载(lazy) 和 Objective-C 懒加载的区别
  5. Javaweb上下文监听者ServletContextListener
  6. 剑指offer--面试题22
  7. cf701B Cells Not Under Attack
  8. Delphi通过IE窗口句柄获取网页接口(IWebBrowser2) good
  9. Jqgrid学习(转载)
  10. 在vmware 中使用桥连接 连接到网络
  11. iOS 字体权重weight
  12. unity加载ab后,场景shader不起效问题(物件表现黑色)
  13. Win10远程桌面提示你的凭据不工作的处理方法
  14. 618大促微服务、web、redis等的超时时间
  15. Git使用、Git配置、Git提交代码、Git上传
  16. SALT+HASH撒盐加密
  17. Oracle 11g trace events
  18. 转一个Visual Stuido 快捷键
  19. [NOIp2015]运输计划 (二分 $+$ 树上差分)
  20. MFC+WinPcap编写一个嗅探器之六(分析模块)