蓄水池问题

数组中的每个数对应柱子的高度,求总蓄水量
这里写图片描述

For example, Given [1,0,2,1,0,1,3,2,1,2,1], return 6
Trapping Rain Water
从左到右遍历数组,找出每个i的maxleft
从右到左遍历数组,找出每个i的maxright
若min(maxleft,maxright)大于i的高度,则其差值为i的蓄水量

class Solution {
public:
    int trap(vector<int>& height) {
        const int n=height.size();
        int *left=new int[n]();
        int *right=new int[n]();
        int sum=0;

        for(int i=1;i<n;++i)
            left[i]=max(left[i-1],height[i-1]);
        for(int i=n-2;i>=0;--i)
            right[i]=max(right[i+1],height[i+1]);

        for(int i=0;i<n;++i)
        {
            int value=min(left[i],right[i]);
            if(value>height[i])
                sum+=value-height[i];
        }

        delete[] left;
        delete[] right;

        return sum;
    }
};
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的蓄水池建造数学建模模板: 1.问题描述: 我们需要建造一个蓄水池来存储雨水,以供后续使用。该蓄水池需要满足以下条件: - 能够存储指定的水量 - 能够在一定时间内完成蓄水 - 能够在一定时间内排放水量 2.建模假设: - 蓄水池为圆柱形,直径为D,高度为H - 蓄水池内的水面高度为h,水位从底部开始逐渐上升 - 蓄水池的进水口和出水口均为圆形,直径分别为d1和d2 - 进水口和出水口的流量分别为Q1和Q2 - 水的密度为ρ,重力加速度为g 3.模型建立: 根据建模假设,我们可以得到以下方程组: - 体积方程:V = π/4 * D^2 * H - 进水口流量方程:Q1 = π/4 * d1^2 * v,其中v为进水口流速 - 出水口流量方程:Q2 = π/4 * d2^2 * v,其中v为出水口流速 - 蓄水池内水位方程:dh/dt = (Q1-Q2)/A,其中A为蓄水池底面积 4.求解过程: - 根据体积方程,可以计算出蓄水池的总容量V - 根据进水口和出水口的流量方程,可以计算出进水口和出水口的流速v1和v2 - 根据蓄水池内水位方程,可以计算出水位随时间的变化情况h(t) - 可以通过求解方程dh/dt = (Q1-Q2)/A,得到任意时刻的水位变化速度 5.模型验证: 为了验证模型的可靠性,可以进行以下实验: - 测量进水口和出水口的直径和流量 - 在蓄水池内加入一定量的水,并记录水位随时间的变化情况 - 根据模型计算出水位随时间的变化情况,并与实验数据进行比较 通过比较实验数据和模型计算结果,可以验证模型的可靠性,并对模型进行进一步改进和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值