当前位置: 首页 > news >正文

it网站模板网络运营策划

it网站模板,网络运营策划,做片头片尾比较好的网站,怎么做装修网站平台三类问题 求总的积水量求水坑的个数求水坑最深的深度 基本思路 我们需要从列的角度来看第 i i i 列是不是有积水,但我们该如何确定第 i i i 列是否是有积水? 方法是事先维护一个前后缀的最大值, L [ i ] L[i] L[i] 和 R [ i ] R[i] R[…
1

三类问题

  • 求总的积水量
  • 求水坑的个数
  • 求水坑最深的深度
基本思路

我们需要从列的角度来看第 i i i 列是不是有积水,但我们该如何确定第 i i i 列是否是有积水?

方法是事先维护一个前后缀的最大值, L [ i ] L[i] L[i] R [ i ] R[i] R[i] 分别表示 [ 1 , i ] [1,i] [1,i] [ i , n ] [i,n] [i,n] 中障碍物的最高高度,那么对于第 i i i 列,如果满足 L [ i ] > h [ i ] & & h [ i ] < R [ i ] L[i]> h[i] ~\&\&~ h[i]< R[i] L[i]>h[i] && h[i]<R[i],那么就证明它是低洼地,且水深就是 m i n ( L [ i ] , R [ i ] ) − h [ i ] min(L[i],R[i])-h[i] min(L[i],R[i])h[i]

准备工作
int h[N], L[N], R[N], n;
//分别记录第i列的障碍物高度以及前后缀最大值
void work() {cin >> n;for (int i = 1; i <= n; i++) cin >> h[i];for (int i = 1; i <= n; i++) L[i] = max(L[i - 1], h[i]);for (int i = n; i >= 1; i--) R[i] = max(R[i + 1], h[i]);
}
求总的积水量
int get_sum() {int sum = 0;for (int i = 1; i <= n; i++) {if (L[i] > h[i] && h[i] < R[i]) {sum += min(L[i], R[i]) - h[i];}}return sum;
}
求水坑的个数

注意:即使两个相邻的水坑有相同高度的水平面,只要之间有障碍物相隔,就算是两个水坑。

解决办法:引入一个标记状态的数组 s t [ N ] st[N] st[N],表示第 i i i 列是否是水坑的一条,如果 s t [ i ] = = t r u e & & s t [ i − 1 ] = = t r u e st[i]==true~\&\&~st[i-1]==true st[i]==true && st[i1]==true,那么就说明了他们是属于同一水坑,否则第 i i i 列就属于一个新的水坑。

bool st[N];//表示第i列是否是水坑的一条
int get_cnt() {int cnt = 0;for (int i = 1; i <= n; i++) {if (L[i] > h[i] && h[i] < R[i]) {if (!st[i - 1]) cnt++;st[i] = true;}}return cnt;
}
求水坑的最深的深度
int get_mx() {int mx = 0;for (int i = 1; i <= n; i++) {if (L[i] > h[i] && h[i] < R[i]) {mx = max(mx, min(L[i], R[i]) - h[i]);}}return mx;
}
例题
  • 积水量 http://bailian.openjudge.cn/practice/4074/

  • 有多少坑

题目描述

大雨过后,一些高低不平的地方就会形成积水,俗称为“坑”。

这里我们将问题简化为只考虑一段路面的横截面。我们将这一段截面上的土地分割成单位宽度的窄条,测量出每个窄条的高度。

假设有无穷多的水量从天而降,请你计算一下,这段路面上会形成多少个水坑?坑的最大深度是多少毫米?

输入

输入第一行给出一个正整数 N ( ≤ 100000 ) N(\leq 100000) N(100000)。随后一行给出 N N N 个非负整数,为路面横截面总左到右的单位宽度窄条的高度,以毫米为单位,不超过 1000 1000 1000

输出

输出分两行,第一行输出水坑的个数,第二行输出所有水坑中最大的深度,以毫米为单位。

注意:即使两个相邻的水坑有相同高度的水平面,只要之间有窄条相隔,就算是两个水坑。

样例输入

12
1 4 2 10 7 1 2 1 8 3 1 2

样例输出

3
7

代码实现

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int h[N], L[N], R[N], n;
//分别记录第i列的障碍物高度以及前后缀最大值
bool st[N];//表示第i列是否是水坑的一条
void work() {cin >> n;for (int i = 1; i <= n; i++) cin >> h[i];R[n + 1] = 0;for (int i = 1; i <= n; i++) L[i] = max(L[i - 1], h[i]);for (int i = n; i >= 1; i--) R[i] = max(R[i + 1], h[i]);
}
int get_cnt() {int cnt = 0;for (int i = 1; i <= n; i++) {if (L[i] > h[i] && h[i] < R[i]) {if (!st[i - 1]) cnt++;st[i] = true;}}return cnt;
}
int get_mx() {int mx = 0;for (int i = 1; i <= n; i++) {if (L[i] > h[i] && h[i] < R[i]) {mx = max(mx, min(L[i], R[i]) - h[i]);}}return mx;
}
int main() {work();cout << get_cnt() << "\n" << get_mx();return 0;
}
http://www.tj-hxxt.cn/news/25049.html

相关文章:

  • 网站改版说明电视剧百度风云榜
  • 温州网站建设方案案例设计推广类软文案例
  • 在什么网站可以做硬件项目天津seo
  • 网站建设维修服务流程赣州seo顾问
  • 做网站广告语小红书sem是什么意思
  • 中国社交网站做多外国人的网络推广营销培训机构
  • 外贸公司会计账务处理怎么快速优化网站排名
  • 专门做本子的网站长春网站建设方案咨询
  • 国家住房和城乡建设委员会网站程序员培训机构排名
  • 包装公司网站模板疫情最新消息今天封城了
  • 南宁网站建设怎样建立一个好网站市场营销模式有哪些
  • 服务器和域名都有了 怎么做网站百度一下官网网址
  • 自己学网站建设百度seo排名优
  • 银川做网站的 公司有哪些seo服务外包客服
  • 如何建立营销性企业网站论文自己如何注册网站
  • wordpress 慢 优化指定关键词排名优化
  • 武汉微信网站建设外链网站推荐
  • dedecms做企业网站网站推广优化c重庆
  • 在什么网站能帮人做ppt泰安网站制作推广
  • 汕头网站推广教程如何实施网站推广
  • 为了 门户网站建设网络推广渠道和方式
  • html如何做网站老哥们给个关键词
  • 做网站开麻烦吗seo数据是什么意思
  • 一家企业如何做网站推广酒店推广渠道有哪些
  • 做外贸的阿里巴巴网站是哪个更好软文推广产品
  • 网站建设开发语言和使用工具2023免费推广入口
  • 与设计行业相关的网站高质量外链购买
  • 微商城搭建平台郑州关键词seo
  • 嘉定网站制作平台怎么推广
  • 安徽关键词seo长春网站优化体验