luogu P6503 [COCI 2010/2011 #3] DIFERENCIJA

news/2025/10/1 11:03:29/文章来源:https://www.cnblogs.com/lyrgo/p/19122237

题目大意

题面
让我们求一个序列中的

\[\sum^{n}_{i=1}\sum^{n}_{j=i}(\max_{i\leq k\leq j} a_k-\min_{i\leq k \leq j} a_k) \]

Sol

由于暴力是\(O(n^2)\)的,所以我们需要优化
我们先看暴力的流程:

  • 每次选取一段区间求出其中的最大最小值(可以使用滑动窗口控制右端点)
  • 随后计算答案

复杂度瓶颈主要在于对于每一个右端点都要处理一次
我们把原式拆开:

\[\sum^{n}_{i=1}\sum^{n}_{j=i}\max_{i\leq k\leq j} a_k-\sum^{n}_{i=1}\sum^{n}_{j=i}\min_{i\leq k \leq j} a_k \]

看起来求最大值和最小值的方法是一致的,所以我们先考虑求最大值
对于每一个\(a_i\),我们一定能找到一个最大的区间\([l,r]\)满足\(\max_{l\leq k\leq r} a_k=a_i\)
这个时候就存在\((i-l+1)(r-i+1)\)个区间最大值为\(a_i\) (可以参考左边选几个 右边选几个理解,左右可以不选)
如果要直接维护一个数的区间,复杂度依然不对
转换一下,既然这个区间是最大的,那么说明\(a_{l-1}\)\(a_{r+1}\)一定是大于等于\(a_i\)的 (至于为什么大于等于待会说)
这个时候就变成了单调栈的模板,维护一个数左边第一个比他大的数的位置
上面个区间个数就可以变成\((i-L)(R-i)\) ,其中\(L\)为左边第一个大于它的数,\(R\)为右边第一个大于等于它的数
一边取等于一边不取是因为不会产生重复贡献 (考虑一下 \(1,0,1,0,1\)的情况)
(也可以左边取右边不取)

最小值同理,整体复杂度是\(O(n)\),可以AC

Code

#include <cstdio>
#include <iostream>
#include <algorithm>using namespace std;typedef long long LL;const int N = 3e5+10;int n;
LL a[N];
LL ss[N] , hh , tt;
LL lmax[N] , rmax[N] , lmin[N] , rmin[N];int main() {scanf("%d" , &n);for(int i = 1 ; i <= n ; i ++)scanf("%lld" , &a[i]);hh = 0; tt = -1;for(int i = 1 ; i <= n ; i ++) {while(hh <= tt && a[ss[tt]] <= a[i]) tt --;if(hh <= tt) lmax[i] = ss[tt];ss[++ tt] = i;}hh = 0; tt = -1;for(int i = 1 ; i <= n ; i ++) {while(hh <= tt && a[ss[tt]] >= a[i]) tt --;if(hh <= tt) lmin[i] = ss[tt];ss[++ tt] = i;}hh = 0; tt = -1;for(int i = n ; i >= 1 ; i --) {while(hh <= tt && a[ss[tt]] < a[i]) tt --;if(hh <= tt) rmax[i] = ss[tt];else rmax[i] = n+1;ss[++ tt] = i;}hh = 0; tt = -1;for(int i = n ; i >= 1 ; i --) {while(hh <= tt && a[ss[tt]] > a[i]) tt --;if(hh <= tt) rmin[i] = ss[tt];else rmin[i] = n+1;ss[++ tt] = i;}LL res = 0;for(int i = 1 ; i <= n ; i ++) {res += a[i] * (i - lmax[i]) * (rmax[i] - i);res -= a[i] * (i - lmin[i]) * (rmin[i] - i);}printf("%lld\n" , res);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/923774.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做网站一个月能挣多少钱洛阳做网站哪家便宜

1. 适配器模式 (Adapter Pattern) 适配器模式是一种结构型设计模式&#xff0c;旨在将一个类的接口转换成客户端所期待的另一个接口&#xff0c;从而使原本由于接口不兼容而无法一起工作的类能够协同工作。适配器模式通常用于需要复用现有类但其接口与要求不匹配的情况。 1.1…

网络公司网站建设服务dw软件免费安装

候选基因如何分析&#xff1f; 通常情况下关联分析会得到一大堆候选基因&#xff0c;总不可能每个都有用&#xff0c;因此需要对候选基因进行深一步分析&#xff0c;本篇笔记分享一下群体遗传学研究中GWAS候选位点与候选基因的筛选思路。主要的方式包括单基因关联分析、连锁程度…

2025宅基地纠纷律所权威推荐榜:专业调解与胜诉保障实力之选

宅基地纠纷作为农村土地争议的重要类型,近年来呈现持续增长态势。随着城乡一体化进程加速和土地资源价值提升,涉及宅基地使用权确认、边界划分、拆迁补偿等案件数量显著上升。这类纠纷往往牵涉农民切身利益,法律关系…

新化 网站开发比较有特色的网站

多模字符串匹配算法在这里指的是在一个字符串中寻找多个模式字符字串的问题。一般来说&#xff0c;给出一个长字符串和很多短模式字符串&#xff0c;如何最快最省的求出哪些模式字符串出现在长字符串中是我们所要思考的。该算法广泛应用于关键字过滤、入侵检测、病毒检测、分词…

一般做网站宽度是多少深圳的设计网站

LLM-based KG KnowLM OpenSPGKG-based RAG 基本原理 从query出发的语义解析 pre-LLM方法 思想&#xff1a;直接将问题解析为对应的逻辑表达式&#xff0c;然后到知识图谱中查询。 方法&#xff1a;通常包含逻辑表达式、语义解析算法、语义解析模型训练三部分。一般步骤是将问句…

做汽车配件招聘网站徐州 网站建设

提示&#xff1a;Grounding DINO、TAG2TEXT、RAM、RAM论文解读 文章目录 前言一、Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection1、摘要2、背景3、部分文献翻译4、贡献5、模型结构解读a.模型整体结构b.特征增强结构c.解码结构 6、实…

wordpress 博客网站是免费的么wordpress首页文件夹

面向对象编程思想 1、什么是面向过程 传统的面向过程的编程思想总结起来就八个字——自顶向下&#xff0c;逐步细化&#xff01; → 将要实现的功能描述为一个从开始到结束按部就班的连续的“步骤” → 依次逐步完成这些步骤&#xff0c;如果某一个步骤的难度较大&#xff…

网站开发岗位实际情况做ae动图的网站

一.IOU 1.GIOU解决没有交集的框,IOU为0,其损失函数导数为0,无法优化的问题。 图1 GIOU,IOU,l2范数差异 a)可看出 l2值一样,IOU值是不一样的,说明L1,L2这些Loss用于回归任务时&#xff0c;不能等价于最后用于评测检测的IoU. b)可看出当框有包含关系,GIOU就退化为IOU 其是找…

docker build 时报错 Error fail to solve

docker build 时报错 Error fail to solve,排查处理。问题:填写镜像源: 在Docke Desktop的设置中,选择Docker Engine, 填写: {"builder": {"gc": {"defaultKeepStorage": "20…

web图像触发防盗链,无法显示

web图像触发防盗链,背景却无非正常显示,但是音乐播放器和别的功能模块却可以正常访问网络加载的解决方法。问题 网页在Windows直接运行的时候一切正常,但是通过docker以后,浏览器通过localhost:12345访问时,背景却…

成都市网站建设费用及企业站长统计芭乐官方网站下载

第二章 SpringFramework 五、Spring AOP 面向切面编程 6. Spring AOP 基于 XML 方式实现&#xff08;了解&#xff09; 6.1 准备工作 加入依赖和基于注解的 AOP 时一样。准备代码把测试基于注解功能时的 Java 类复制到新 module 中&#xff0c;去除所有注解。 6.2 配置 Sp…

.NET操作Excel:单元格范围 (Range) 的精确定位与常用管理 (下)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

TCP的学习 - 实践

TCP的学习 - 实践2025-10-01 10:32 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-fami…

24届(华为OD)Java面经 - 教程

24届(华为OD)Java面经 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&quo…

dw内部网站链接怎么做网页设计与网站建设专业

本系列文章是学习深蓝学院-移动机器人运动规划课程第五章最优轨迹生成 过程中所记录的笔记&#xff0c;本系列文章共包含四篇文章&#xff0c;依次介绍了微分平坦特性、无约束BVP轨迹优化、无约束BIVP轨迹优、 带约束轨迹优化等内容 本系列文章链接如下&#xff1a; 最优轨迹生…

每天半小时,轻松学Docker第一篇:Debian 12 无痛安装与初体验 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

南宁网站制作费用it项目外包网

哈夫曼编码的设计与应用 问题需求分析 用哈夫曼编码(Huffman Coding)&#xff0c;又称霍夫曼编码&#xff0c;是一种编码方式&#xff0c;哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法&#xff0c;该方法完全依据字符出现概率来构造异字头的平均长…

php网站访问很慢公司注册资金最低多少钱

Pass-14 &#xff08;图片马&#xff0c;判断文件类型&#xff09; 图片的格式在防护中通常是不会使用后缀进行判断的依据&#xff0c;文件头是文件开头的一段二进制码&#xff0c;不同类型的图片也就会有不同的二进制头。   JPEG (jpg)&#xff0c;文件头&#xff1a;FF D…

2025上海骨灰盒哪里买优质厂家权威推荐榜:匠心工艺与品质服务之选

行业背景介绍 在殡葬文化中,骨灰盒承载着特殊的意义,它不仅是逝者最后的归宿,更是生者情感的寄托。随着社会的发展和人们观念的转变,对于骨灰盒的品质、工艺和文化内涵的要求也越来越高。上海作为国际化大都市,在…