//UVA1442Cave
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN = 1e6 + 10;
int p[MAXN], s[MAXN], hL[MAXN];
int main() {
int T;
scanf("%d", &T);
while(T--) {
int n;
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]);
int level = s[0];
for(int i = 0; i < n; i++){
if(level < p[i]) level = p[i];
if(level > s[i]) level = s[i];
hL[i] = level;
}
/*从左往右扫描
假设水不会向右漫延,此组数据保证了水不会向左漫延
*/
int ans = 0;
level = s[n - 1];
for(int i = n - 1; i >= 0; i--) {
if(level < p[i]) level = p[i];
if(level > s[i]) level = s[i];
ans += min(hL[i], level) - p[i];
}
/*
与上述情况同理,但扫描方向相反
取两者交集,得到的水位不会向两个方向漫延
*/
printf("%d\n", ans);
}
return 0;
}
/*
1
15
6 6 7 5 5 5 5 5 5 1 1 3 3 2 2
10 10 10 11 6 8 7 10 10 7 6 4 7 11 11
*/
06-08
615
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
06-15
06-15
06-15
08-02
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交