CERC 2009 Cav 扫描法 (uvaLive 4621 - Cav)
2016-04-03 22:20
316 查看
/*
问题等价于对每一格(横坐标跨度为1)求出可行的最大水位,然后累加每一位置。
*/
#include<bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
#define rep(i,n) for(int i=0 ;i<(n) ;i++)
using namespace std;
typedef long long ll;
const int INF =0x3f3f3f3f;
const int maxn=1e6 ;
int n,d[maxn+10],u[maxn+10],h[maxn+10];
void read()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&d[i]);
}
for(int i=1;i<=n;i++)
{
scanf("%d",&u[i]);
}
}
void work()
{
//首先从左往右扫,处理好每个格子与左边的关系。
int level=u[1];//一开始让水位尽可能大
for(int i=1;i<=n;i++)
{
if(level<d[i]) level=d[i];//如果...那么这时此处必须没水,否则淹没左边区域。
else if(level>u[i]) level=u[i];//此处被左边淹没,要求下降水位。
h[i]=level;//这个是考虑格子i左边 得出的格子i可行的最大水位。
}
level=u
;
int ans=0;
for(int i=n;i>=1;i--)
{
if(level<d[i]) level=d[i];
else if(level>u[i]) level=u[i];
ans+=min(level,h[i])-d[i];
}
printf("%d\n",ans);
}
int main()
{
int T;scanf("%d",&T);
while(T--)
{
read();
work();
}
return 0;
}
问题等价于对每一格(横坐标跨度为1)求出可行的最大水位,然后累加每一位置。
*/
#include<bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
#define rep(i,n) for(int i=0 ;i<(n) ;i++)
using namespace std;
typedef long long ll;
const int INF =0x3f3f3f3f;
const int maxn=1e6 ;
int n,d[maxn+10],u[maxn+10],h[maxn+10];
void read()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&d[i]);
}
for(int i=1;i<=n;i++)
{
scanf("%d",&u[i]);
}
}
void work()
{
//首先从左往右扫,处理好每个格子与左边的关系。
int level=u[1];//一开始让水位尽可能大
for(int i=1;i<=n;i++)
{
if(level<d[i]) level=d[i];//如果...那么这时此处必须没水,否则淹没左边区域。
else if(level>u[i]) level=u[i];//此处被左边淹没,要求下降水位。
h[i]=level;//这个是考虑格子i左边 得出的格子i可行的最大水位。
}
level=u
;
int ans=0;
for(int i=n;i>=1;i--)
{
if(level<d[i]) level=d[i];
else if(level>u[i]) level=u[i];
ans+=min(level,h[i])-d[i];
}
printf("%d\n",ans);
}
int main()
{
int T;scanf("%d",&T);
while(T--)
{
read();
work();
}
return 0;
}
相关文章推荐
- socket server 服务端 带计算心跳。超时断链的控制
- 修正后的时间类
- Hive与HBase的区别
- block,inline和inline-block概念和区别
- 封装
- 确定两个字符串通过重新排序是否可以相同的算法
- Linux内核设计第六周 ——进程的描述和创建
- cf19B. Checkout Assistant 【01 背包】
- 安卓打开File Explorer里面不显示内容
- socket server 长连接服务端
- 安卓打开File Explorer里面不显示内容
- lintcode:Unique Binary Search Trees II
- Android设计模式应用--状态模式
- android的消息机制
- Android中的Spinner控件)
- cpu_bitmap结构体解析
- Unity3d-Shader-UV移动
- 配置tomcat的compressableMimeType指定gzip的类型
- gdb调试带参数程序
- 【jdk1.8】PriorityQueue源码分析