• uva 1442:Cave(贪心)


    题意:一个洞穴长n,告诉你每个位置的地面高度和顶部高度,让你往里灌水,要求水不能碰到天花板(但可以无限接近)。求最多的水量。(洞穴两边视为封闭)

    思路:如果知道一个位置向左看最高可以多高,向右看最高可以多高,就可以知道这个位置最终的高度了。方法是扫两次。每次扫的时候,定义一个之前最高值。若之前最高值高于现在的顶,则下降至顶。若低于底,则上升至底(因为后面的这种高度能被这个底挡住)。如果在中间则不用变。

    代码:

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    
    #define N 1000010
    
    int p[N];
    int s[N];
    
    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 tmp = 0x3f3f3f3f;
            for (int i = 0; i < n; i++) {
                tmp = min(tmp, s[i]);
                tmp = max(tmp, p[i]);
    
                s[i] = tmp;
            }
    
            tmp = 0x3f3f3f3f;
            for (int i = n-1; i >= 0; i--) {
                tmp = min(tmp, s[i]);
                tmp = max(tmp, p[i]);
    
                s[i] = tmp;
            }
    
            int ans = 0;
            for (int i = 0; i < n; i++) {
                ans += s[i]-p[i];
            }
            printf("%d
    ", ans);
        }
        return 0;
    }
  • 相关阅读:
    剑指offer(18)二叉搜索树的后续遍历
    剑指offer(17)层次遍历树
    剑指offer(16)栈的压入、弹出序列
    剑指offer(15)
    剑指offer(14)
    剑指offer(13)
    剑指offer(12)
    剑指offer(11)
    2020 年 11 月编程语言排行榜,Python 势如破竹,超越 Java?
    Python 除了 time.sleep,你还有一个暂停代码的方法
  • 原文地址:https://www.cnblogs.com/shinecheng/p/3989389.html
Copyright © 2020-2023  润新知