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

E - Excellent Views

Problem - E - Codeforces

问题描述:数组H大小都不相同。从i到j是可行的,当且仅当
不存在 k ,使 ∣ i − k ∣ ≤ ∣ i − j ∣ , H k > H j 不存在k,使 \\ |i - k| \leq |i - j|, \quad H_k > H_j 不存在k,使ikij,Hk>Hj

暴力 O(n * n),从当前点向两边进行扩散。

void solve() {int n;cin>>n;for(int i = 1; i <= n; ++i) cin>>a[i];for(int i = 1; i <= n; ++i) {int ma = -INF;int cnt = 0;int len = max(i - 1, n - i);for(int j = 0; j <= len; ++j) {int lvidx = i - j, rvidx = i + j;if(lvidx < 1) {ma = max({ma, a[rvidx]});if(a[rvidx] >= ma) cnt++;} else {ma = max({ma, a[lvidx], a[rvidx]});if(a[lvidx] >= ma) cnt++;if(a[rvidx] >= ma) cnt++;}}cout<<cnt - 2<<" ";}
}

优化:单调栈,对于i算出到左边和到右边第一个大于下标为i的元素值得长度或下标,用差分对半记录即可。

代码:

#include <iostream>
#include <vector>
#include <string>
#include <cstring>
#include <set>
#include <map>
#include <queue>
#include <ctime>
#include <random>
#include <sstream>
#include <stack>
#include <numeric>
#include <stdio.h>
#include <functional>
#include <bitset>
#include <algorithm>
using namespace std;// #define Multiple_groups_of_examples
#define IOS std::cout.tie(0);std::cin.tie(0)->sync_with_stdio(false);
#define dbgnb(a) std::cout << #a << " = " << a << '\n';
#define dbgtt cout<<" !!!test!!! "<<endl;
#define rep(i,x,n) for(int i = x; i <= n; i++)#define all(x) (x).begin(),(x).end()
#define pb push_back
#define vf first
#define vs secondtypedef long long LL;
typedef pair<int,int> PII;
/*** https://codeforces.com/gym/103185/problem/E* 题意:对每一个i找到满足条件的j, 其中条件为:不存在k, 使 abs(i - k) <= abs(i - j) && Hj  < Hk 成立* 解法:std:https://github.com/Diego1149/ICPC-Latam-2020 (好像是用线段树写的*      other:https://blog.csdn.net/m0_53807008/article/details/119065842* * 思路:单调栈*      两次单调栈。这里为了简单,假设 1 <= i < j <= n*      第一次找 对于j来说,从i到j中满足条件的元素(这里j是题意中的i。*      第二次找,对于i来说,从i到j中满足条件的元素(这里i就是题意中的i。* e.g. 下标:      ... 符合条件的  i  符合条件的 ...*      对于第一次来说:*          比a[i]小的最大元素(记为A)下标找到,将比a[i]小的最大元素下标对应得pre数组赋值 i - 1,表示,最后一个小于A的下标位置。*          对于那个最大元素下标(记为idx),使 idx 对应的元素可以worth的长度为 [idx, i - 1]的一半。*          记录用差分记录即可。*      第二次,倒着来一边,同第一次。
*/
const int INF = 0x3f3f3f3f;
const int N = 2e5 + 21;
int a[N];
int pre[N], suf[N];
int lef[N], rig[N];
void inpfile();
void solve() {int n; cin>>n;for(int i = 1; i <= n; ++i) cin>>a[i];a[n+1] = INF; // 让 n + 1 等于inf, 0 等于inf,因为要让所以的都出栈stack<int> sk;// 考虑a[i]对左边的贡献sk.push(1);for(int i = 2; i <= n+1; ++i) {// 如果当前 H 大于 上一个H,将上一个H对应的下标进行记录while(sk.size() && a[i] > a[ sk.top()]) {pre[ sk.top()] = i - 1; // 将i - 1进行赋值,表示到i - 1 ,大于的条件一直是成立的sk.pop();}sk.push(i);}for(int i = 1; i <= n; ++i) {lef[i+1]++; // 将i + 1 先进行++,表示有一个贡献if(pre[i] != n) // 如果等于n,表示,恒成立,不用--,// 否则,只能到达 (i + pre[i]) / 2 的下标,利用差分 就是 [ r + 1]--lef[ (i + pre[i]) / 2 + 1]--;}// 考虑a[i]对右边的贡献// 思路及代码同上sk.push(n);a[0] = INF;for(int i = n - 1; i >= 0; --i) {while(sk.size() && a[i] > a[ sk.top()]) {suf[ sk.top()] = i + 1;sk.pop();}sk.push(i);}for(int i = 1; i <= n; ++i) {rig[i-1]++;if(suf[i] != 1)rig[ (i + suf[i] + 1) / 2 - 1]--;}// 差分前缀和for(int i = 1; i <= n; ++i) lef[i] += lef[i-1];for(int i = n; i >= 1; --i) rig[i] += rig[i+1];for(int i = 1; i <= n; ++i) cout<<lef[i] + rig[i]<<" ";
}
int main()
{#ifdef Multiple_groups_of_examplesint T; cin>>T;while(T--)#endifsolve();return 0;
}
void inpfile() {#define mytest#ifdef mytestfreopen("ANSWER.txt", "w",stdout);#endif
}

Gym - 103185E E - Excellent Views_流锡的博客-CSDN博客

相关文章:

E - Excellent Views

Problem - E - Codeforces 问题描述&#xff1a;数组H大小都不相同。从i到j是可行的&#xff0c;当且仅当 不存在 k &#xff0c;使 ∣ i − k ∣ ≤ ∣ i − j ∣ , H k > H j 不存在k&#xff0c;使 \\ |i - k| \leq |i - j|, \quad H_k > H_j 不存在k&#xff0c;使…...

WiFi天线和NB-IoT天线不通用

表面看起来完全一样。但是把WiFi天线插到NB-IoT设备后&#xff0c;信号弱了很多。还导致设备反复重启...

IoT DC3 是一个基于 Spring Cloud 的开源的、分布式的物联网(IoT)平台本地部署步骤

dc3 windows 本地搭建步骤&#xff1a; ​​ 必要软件环境 进入原网页# 务必保证至少需要给 docker 分配&#xff1a;1 核 CPU 以及 4G 以上的运行内存&#xff01; JDK : 推荐使用 Oracle JDK 1.8 或者 OpenJDK8&#xff0c;理论来说其他版本也行&#xff1b; Maven : 推荐…...

VBA Excel自定义函数的使用 简单的语法

一个简单的教程&#xff0c;实现VBA自定义函数。 新建模块 复制后面的代码放进来 函数的入口参数不定义&#xff0c;则认为是一块区域&#xff1b; 反之&#xff0c;如FindChar1 As String&#xff0c;则认为是输入的单值。 循环和分支如下例子&#xff0c;VB比较接近自然语…...

字节跳动 从需求到上线全流程 软件工程流程 需求评估 MVP

走进后端开发流程 整个课程会带大家先从理论出发&#xff0c;思考为什么有流程 大家以后工作的团队可能不一样&#xff0c;那么不同的团队也会有不同的流程&#xff0c;这背后的逻辑是什么 然后会带大家按照走一遍从需求到上线的全流程&#xff0c;告诉大家在流程的每个阶段&am…...

线性代数-矩阵的本质

线性代数-矩阵的本质 线性代数-矩阵的本质...

React基础入门之虚拟Dom

React官方文档&#xff1a;https://react.docschina.org/ 说明 重要提示&#xff1a;本系列文章基础篇总结自尚硅谷课程&#xff0c;且采用类式写法&#xff01;&#xff01;最新的函数式组件写法见高级篇。 本系列文档旨在帮助vue同学更快速的学习react&#xff0c;如果你很…...

C++基础Ⅰ编译、链接

目录儿 1 C是如何工作的1.1 预处理语句1.2 include1.3 main()1.4 编译单独编译项目编译 1.5 链接 2 定义和调用函数3 编译器如何工作3.1 编译3.1.1 引入头文件系统头文件自定义头文件 3.1.2 自定义类型3.1.3 条件判断拓展: 汇编 3.2 链接3.2.1 起始函数3.2.2 被调用的函数 3.3 …...

VMware和ubuntu配置Hadoop环境

目录 一、获取VMware安装包 1、官网获取 1&#xff09;首先先进入官网&#xff0c;官网首页是下面这样&#xff1a; 2&#xff09;接着点击产品选项 3&#xff09;进入后点击查看所有产品&#xff0c;然后在右上角选择排序方式为Z到A&#xff0c;然后向下滑动找到Workstation…...

uview2.0自定义tabbar

tabbar组件 <template><u-tabbar :value"tab" change"changeTab" :fixed"true" :border"true" :placeholder"true":safeAreaInsetBottom"true"><u-tabbar-item text"消息" icon"c…...

Star History 月度开源精选|Llama 2 及周边生态特辑

7 月 18 日&#xff0c;Meta 发布了 Llama&#xff0c;大语言模型 Llama 1 的进阶版&#xff0c;可以自由免费用于研究和商业&#xff0c;支持私有化部署。 所以本期 Star History 的主题是&#xff1a;帮助你快速把 Llama 2 在自己机器上跑起来的开源工具&#xff0c;无论你的…...

修改电脑上路由表使笔记本默认走无线

如果笔记本上即连接了有线&#xff0c;也连接了无线&#xff0c;默认电脑会走有线的&#xff0c;通过route print命令查看路由表就可以看出来&#xff0c;因为无线的“metric”跳数要比有线的高 解决方法&#xff1a; 如果想实现让默认走无线&#xff0c;就需要修改自己电脑的…...

Spring Cache的介绍以及怎么使用(redis)

Spring Cache 文章目录 Spring Cache1、Spring Cache介绍2、Spring Cache常用注解2.1、EnableCaching注解2.2、CachePut注解2.3、CacheEvict注解2.4、Cacheable注解 3、Spring Cache使用方式--redis 1、Spring Cache介绍 Spring Cache是一个框架&#xff0c;实现了基于注解的缓…...

软考高级系统架构设计师系列论文六十九:论信息系统的安全风险评估

一、信息系统相关知识点 软考高级信息系统项目管理师系列之四十三:信息系统安全管理软考高级系统架构设计师:系统安全分析与设计...

Ubuntu系统安装之后首需要做的事情

Ubuntu系统的初步环境搭建 1、换源2、显卡3、浏览器4、输入法5、终端6、ROS7、VSCode8、设置时间与win一致9、 TimeShift10、 Anaconda&#xff08;考虑装不装&#xff09; 1、换源 点开Software&&Update&#xff0c;找到Ubuntu Software中的Download from&#xff0c…...

Qt——QPushButton控件的常见属性、方法和信号

Qt中QPushButton控件的常见属性、方法和信号 一、QPushButton控件常见属性 一、QPushButton控件常见方法 一、QPushButton控件常见信号 一、QPushButton控件常见属性&#xff08;Properties&#xff09; 1. text: 描述&#xff1a;按钮上显示的文本。 用法&#xff1a; butto…...

AUTOSAR规范与ECU软件开发(实践篇)5.5 基于ISOLAR-A的系统级设计与配置方法(上)

目录 前言 1 系统配置输入文件创建与导入 2、 Composition SWC建立 前言 如前所述, AUTOSAR支持整车级别的软件架构设计, 开发人员可以进行整车级别的软件组件定义, 再将这些软件组件分配到各个ECU中, 这就是AUTOSAR系统级设计需要完成的主要任务。 下面结合AUTOSAR方法论…...

mongoDB的CRUD

...

flutter TARGET_SDK_VERSION和android 13

config.gradle ext{SDK_VERSION 33MIN_SDK_VERSION 23TARGET_SDK_VERSION 33COMPILE_SDK_VERSION SDK_VERSIONBUILD_TOOL_VERSION "33.0.0"//兼容库版本SUPPORT_LIB_VERSION "33.0.0"}app/build.gradle里面的 defaultConfig {// TODO: Specify your…...

大数据Flink(六十六):Flink的重要概念和小结

文章目录 Flink的重要概念和小结 一、​​​​​​​​​​​​​​数据流图(Dataflow Graph)...

Rider 添加NuGet软件包 (NuGet Package)

如图&#xff0c;在解决方案中选择自己的项目右键&#xff0c;点击管理 NuGet 软件包即可 在搜索栏中搜索自己要使用的软件包安装即可使用...

什么是JVM ?

一、JVM 简介 JVM 是 Java Virtual Machine 的简称&#xff0c;意为 Java 虚拟机。 虚拟机是指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整计算机系统。 常见的虚拟机&#xff1a; JVM 、 VMwave 、 Virtual Box 。 JVM 和其他两个虚拟机的区别…...

【大数据】Hive 中的批量数据导入

Hive 中的批量数据导入 在博客【大数据】Hive 表中插入多条数据 中&#xff0c;我简单介绍了几种向 Hive 表中插入数据的方法。然而更多的时候&#xff0c;我们并不是一条数据一条数据的插入&#xff0c;而是以批量导入的方式。在本文中&#xff0c;我将较为全面地介绍几种向 H…...

【Modbus通信实验三】数据切片问题

在做两个串口相互通信的实验中&#xff0c;当发送频率快一点时偶尔会遇到以下情景&#xff0c;即一次send中把原数据拆成两份发送&#xff0c;就会导致CRC校验错误。下图中6字节数据拆成42是把SetRThreshold()阈值设为2&#xff0c;当设为1的情况下则会拆成51。 一开始以为是缓…...

记录《现有docker中安装spark3.4.1》

基础docker环境中存储hadoop3--方便后续查看 参考&#xff1a; 实践&#xff1a; export JAVA_HOME/opt/apache/jdk1.8.0_333 export SPARK_MASTER_IP192.168.0.220 export SPARK_WORKER_MEMORY4g export SPARK_WORKER_CORES2 export SPARK_EXECUTOR_MEMORY4g export HADOOP_H…...

【3ds Max】练习——制作衣柜

目录 步骤 一、制作衣柜顶部 二、制作衣柜门板 三、制作衣柜底部 四、制作柜子腿部 五、制作柜子底板 步骤 一、制作衣柜顶部 1. 首先创建一个平面&#xff0c;然后将图片素材拖入平面 2. 平面大小和图片尺寸比例保持一致 3. 单机鼠标右键&#xff0c;选择对象属性 勾选…...

Spring-MVC的数据响应-19

在访问服务端MVC的时候&#xff0c;这个controller层进行相应操作之后 他要做两件事&#xff1a;页面跳转和返回字符串&#xff0c;在做完这些操作之后&#xff0c;我们一般进行页面展示:排除页面展示之外&#xff0c;有些需求可能直接回写给我们一些数据&#xff1a; 页面跳…...

(三)行为模式:5、中介者模式(Mediator Pattern)(C++示例)

目录 1、中介者模式&#xff08;Mediator Pattern&#xff09;含义 2、中介者模式的UML图学习 3、中介者模式的应用场景 4、中介者模式的优缺点 &#xff08;1&#xff09;优点 &#xff08;2&#xff09;缺点 5、C实现中介者模式的实例 1、中介者模式&#xff08;Media…...

期权是什么?期权的优缺点是什么?

期权是一种合约&#xff0c;有看涨期权和看跌期权两种类型&#xff0c;也就是做多和做空两个方向&#xff0c;走势标的物对应大盘指数&#xff0c;这也是期权与其他金融工具的主要区别之一&#xff0c;可以用于套利&#xff0c;对冲股票和激进下跌的风险&#xff0c;下文介绍期…...

目标检测任务数据集的数据增强中,图像垂直翻转和xml标注文件坐标调整

需求&#xff1a; 数据集的数据增强中&#xff0c;有时需要用到图像垂直翻转的操作&#xff0c;图像垂直翻转后&#xff0c;对应的xml标注文件也需要做坐标的调整。 解决方法&#xff1a; 使用pythonopencvimport xml.etree.ElementTree对图像垂直翻转和xml标…...

贵州贵阳网站开发/如何推广网站运营

今天给大家介绍一下经典的开源机器学习软件&#xff1a; 编程语言&#xff1a;搞实验个人认为当然matlab最灵活了&#xff08;但是正版很贵&#xff09;&#xff0c;但是更为前途的是Python&#xff08;numpyscipymatplotlib)和C/C&#xff0c;这样组合既可搞研究&#xff0c;也…...

专业做网站制作自助建站系统/平台推广销售话术

写在前面 本文接k8s之ingress 。 本文看一个基于ingress作为流量入口的实战例子&#xff0c;架构图如下&#xff1a; 接下来详细看下。 1&#xff1a;部署MariaDB 首先我们需要定义MariaDB使用的configmap&#xff0c;如下&#xff1a; apiVersion: v1 kind: ConfigMap meta…...

建设银行的网站是什么/网络营销外包推广价格

对应Jenkins项目&#xff1a; /data/jenkins/workspace 查看端口状态&#xff1a; netstat -adp | grep 8092 查看 进程id: ps -ef | grep 3532 开发提供&#xff1a; applications.properties 配置文件&#xff1a; server.xml /conf/web.xml context.xml logback.xml 图片上…...

做图素材网站哪个好/怎么样才可以在百度上打广告

0 Homebrew简介linux系统有个让人蛋疼的通病&#xff0c;软件包依赖&#xff0c;好在当前主流的两大发行版本都自带了解决方案&#xff0c;Red hat有yum&#xff0c;Ubuntu有apt-get而用mac os有一个类似的工具名为Homebrew&#xff0c;Homebrew简称brew&#xff0c;是Mac OSX上…...

做网站要买什么/搜索百度网址网页

我想根据输入的文字&#xff0c;生成特定字体的图片&#xff0c;根据php.net上的样例&#xff0c;并不能生成正确的图片&#xff0c;请问该怎么办&#xff1f;样例中的图片&#xff1a;我的图片&#xff1a;代码&#xff1a;// Set the content-typeheader(Content-Type: image…...

做网站的小图标/百度竞价点击软件

》》下拉组件 1.组件结构&#xff1a; 2.index.js&#xff1a; 1 //index.js2 Component({3 /**4 * 组件的属性列表5 */6 properties: {7 propArray: {8 type: Array,9 } 10 }, 11 /** 12 * 组件的初始数据 13 */ 14 data: { 15 selec…...