zoukankan      html  css  js  c++  java
  • UVALive

    题目大意:有一张洞穴地图,要在这个洞穴里面存放水,要求水不能碰到洞穴顶部。如今给出每一个位置的顶部位置和地面高度。问最多能够放多少水

    解题思路:根据物理定理,每一段有水的连续区间,水位高度必须相等
    所以我们能够求出在同一段连续区间內的水位高度,该水位高度等于最低洞穴顶部的高度。以此为根据,从左到右更新,再从右到左更新,就能够得到每一个位置的水位高度了

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    const int N = 1000010;
    const int INF = 0x3f3f3f3f;
    int s[N], p[N], n;
    
    void init() {
        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 solve() {
        int t = INF;
        for(int i = 0; i < n; i++) {
            t = min(t, s[i]);
            t = max(t, p[i]);
    
            s[i] = t;
        }
    
        t = INF;
        for(int i = n - 1; i >= 0; i--) {
            t = min(t, s[i]);
            t = max(t, p[i]);
    
            s[i] = t;
        }
    
        int ans = 0;
        for(int i = 0; i < n; i++)
            ans += s[i] - p[i];
    
        return ans;
    }
    
    int main() {
        int test;
        scanf("%d", &test);
        while(test--) {
            init();
            printf("%d
    ", solve());
        }
        return 0;
    }
    
  • 相关阅读:
    facesconfig详解 Crazy
    java反射学习之一反射机制概述
    axis2开发webservice程序
    java反射学习之二万能EXCEL导出
    JMF框架
    解决FF浏览器无法执行window.close()脚本
    ava:String和Date、Timestamp之间的转换
    java获取当前路径。
    JSP 动态验证码。
    dojo.mixin
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5062595.html
Copyright © 2011-2022 走看看