AcWing 5166:对称山脉 ← 动态规划

news2025/2/13 15:12:47

【题目来源】
https://www.luogu.com.cn/problem/P9325
https://www.acwing.com/problem/content/5169/

【题目描述】
有 N 座山排成一排,从左到右依次编号为 1∼N。
其中,第 i 座山的高度为 hi。
对于一段
连续的山脉,我们使用如下方法定义该段山脉的不对称值。
如果一段连续的山脉由第 l∼r(1≤l≤r≤N)座山组成,那么该段山脉的不对称值为 \sum\limits_{i=0}\limits^{\frac{r-l}{2}} |h_{l+i}-h_{r-i}|

现在,你需要回答 N 个问题,问题编号 1∼N。
其中,
第 i 个问题的内容是:请计算,一段恰好包含 i 座山的连续山脉(即长度为 i 的连续区间)的不对称值的最小可能值。

备注:山脉不对称值计算公式的 LaTex 代码如下所示。

\sum\limits_{i=0}\limits^{\frac{r-l}{2}} |h_{l+i}-h_{r-i}|

【输入格式】
第一行包含一个整数 N。
第二行包含 N 个整数 h1, h2, …, hN。

【输出格式】
输出一行 N 个整数,其中第 i 个数表示第 i 个问题的答案。

【数据范围】
1≤N≤
5000, 0≤hi≤10^5

【输入样例1】
7
3 1 4 1 5 9 2

【输出样例1】
0 2 0 5 2 10 10

【样例解释1】
关于第 5 个问题的答案为什么是 2,见如下解析。
让我们依次列举所有长度为 5 的连续区间并计算区间不对称值:
区间 [3,1,4,1,5] 的不对称值为 |3−5|+|1−1|+|4−4|=2。
区间 [1,4,1,5,9] 的不对称值为  |1−9|+|4−5|+|1−1|=9 。
区间 [4,1,5,9,2] 的不对称值为 |4−2|+|1−9|+|5−5|=10。
由上可知,不对称值的最小可能值为 2。

【输入样例2】
4
1 3 5 6

【输出样例2】
0 1 3 7

【样例解释2】
注意,长度为 4 的连续区间只有 [1,3,5,6],其不对称值为  |1−6|+|3−5|=7。

【算法分析】
● 本题 N 最大 5000,最多 2500 对儿,每对儿的最大差值为 10^5,故山脉的不对称值最大为 2500×10^5=2.5×10^8,没有达到 10^9,所以不会爆 int。
● 状态 dp[i][j] 表示以第 i 个山开始的连续 j 个山组成的山脉的不对称值。

【算法代码】

#include <bits/stdc++.h>
using namespace std;

const int maxn=5005;
int h[maxn];
int ans[maxn];
int dp[maxn][maxn];

int main() {
    int n;
    cin>>n;
    for(int i=1; i<=n; i++) cin>>h[i];

    memset(ans,0x3f,sizeof ans);
    ans[1]=0;
    for(int k=1; k<n; k++) {
        for(int i=1; i<=n-k; i++) {
            dp[i][k+1]=dp[i+1][k-1]+abs(h[i]-h[i+k]);
            ans[k+1]=min(ans[k+1],dp[i][k+1]);
        }
    }

    for(int i=1; i<=n; i++) cout<<ans[i]<<" ";
}


/*
in:
7
3 1 4 1 5 9 2

out:
0 2 0 5 2 10 10
*/






【参考文献】
https://www.acwing.com/solution/content/201365/
https://www.acwing.com/solution/content/196866/





 

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

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

相关文章

KEPServerEX 的接口类型与连接方式的详细说明

目录 一、KEPServerEX 核心架构 二、KEPServerEX 支持的接口类型 三、KEPServerEX 支持的连接类型 1. 通用工业协议 2. 品牌专属协议 3. 行业专用协议 4. 数据库与文件接口 四、配置示例 1. 接口配置&#xff08;以OPC UA为例&#xff09; 2. 连接配置&#xff08;以…

云原生AI Agent应用安全防护方案最佳实践(上)

当下&#xff0c;AI Agent代理是一种全新的构建动态和复杂业务场景工作流的方式&#xff0c;利用大语言模型&#xff08;LLM&#xff09;作为推理引擎。这些Agent代理应用能够将复杂的自然语言查询任务分解为多个可执行步骤&#xff0c;并结合迭代反馈循环和自省机制&#xff0…

物联网软件开发与应用方向应该怎样学习,学习哪些内容,就业方向是怎样?(文末领取整套学习视频,课件)物联网硬件开发与嵌入式系统

随着物联网技术的飞速发展&#xff0c;物联网软件开发与应用方向成为了众多开发者关注的焦点。那么&#xff0c;如何在这个领域中脱颖而出呢&#xff1f;本文将为你提供一份详细的学习指南&#xff0c;帮助你从零开始&#xff0c;逐步掌握物联网软件开发与应用的核心技能。 一…

计算机网络-八股-学习摘要

一&#xff1a;HTTP的基本概念 全称&#xff1a; 超文本传输协议 从三个方面介绍HTTP协议 1&#xff0c;超文本&#xff1a;我们先来理解「文本」&#xff0c;在互联网早期的时候只是简单的字符文字&#xff0c;但现在「文本」的涵义已经可以扩展为图片、视频、压缩包等&am…

【天梯赛】L2-001紧急救援(用迪杰斯特拉找出权重和最小的最短路径)

解题反思 尝试DFS&#xff1a;开始使用DFS来遍历求解&#xff0c;但 DFS 存在大量重复计算&#xff0c;像同一节点会被多次访问并重复计算路径信息&#xff0c;导致时间复杂度高&#xff0c;部分测试点未通过 改用迪杰斯特拉&#xff1a;为了求解&#xff0c;设置了很多的辅助…

PortSwigger——WebSockets vulnerabilities

文章目录 一、WebSockets二、Lab: Manipulating WebSocket messages to exploit vulnerabilities三、Lab: Manipulating the WebSocket handshake to exploit vulnerabilities四、Using cross-site WebSockets to exploit vulnerabilities4.1 跨站WebSocket劫持&#xff08;cro…

八、OSG学习笔记-

前一章节&#xff1a; 七、OSG学习笔记-碰撞检测-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/145558132?spm1001.2014.3001.5501 一、了解OSG图元加载显示流程 本章节代码&#xff1a; OsgStudy/wids CuiQingCheng/OsgStudy - 码云 - 开源中国https:…

自己动手实现一个简单的Linux AI Agent

大模型带我们来到了自然语言人机交互的时代 1、安装本地大模型进行推理 下载地址&#xff1a; https://ollama.com/download 部署本地deepseek和嵌入模型 ollama run deepseek-r1:7b2、制定Linux操作接口指令规范 3、编写大模型对话工具 #!/usr/bin/python3 #coding: utf-8…

常见的数据仓库有哪些?

数据仓库(Data Warehouse,简称数仓)是企业用于存储、管理和分析大量数据的重要工具,其核心目标是通过整合和处理数据,为决策提供高质量、一致性和可信度的数据支持。在构建和使用数仓时,选择合适的工具和技术至关重要。以下是常见的数仓工具及其特点的详细介绍: 1. Hiv…

LSTM 学习笔记 之pytorch调包每个参数的解释

0、 LSTM 原理 整理优秀的文章 LSTM入门例子&#xff1a;根据前9年的数据预测后3年的客流&#xff08;PyTorch实现&#xff09; [干货]深入浅出LSTM及其Python代码实现 整理视频 李毅宏手撕LSTM [双语字幕]吴恩达深度学习deeplearning.ai 1 Pytorch 代码 这里直接调用了nn.l…

【EXCEL】【VBA】处理GI Log获得Surf格式的CONTOUR DATA

【EXCEL】【VBA】处理GI Log获得Surf格式的CONTOUR DATA data source1: BH coordination tabledata source2:BH layer tableprocess 1:Collect BH List To Layer Tableprocess 2:match Reduced Level from "Layer"+"BH"data source1: BH coordination…

国产编辑器EverEdit - 光标位置跳转

1 光标位置跳转 1.1 应用场景 某些场景下&#xff0c;用户从当前编辑位置跳转到别的位置查阅信息&#xff0c;如果要快速跳转回之前编辑位置&#xff0c;则可以使用光标跳转相关功能。 1.2 使用方法 1.2.1 上一个编辑位置 跳转到上一个编辑位置&#xff0c;即文本修改过的位…

cv2.Sobel

1. Sobel 算子简介 Sobel 算子是一种 边缘检测算子&#xff0c;通过对图像做梯度计算&#xff0c;可以突出边缘。 Sobel X 方向卷积核&#xff1a; 用于计算 水平方向&#xff08;x 方向&#xff09; 的梯度。 2. 输入图像示例 假设我们有一个 55 的灰度图像&#xff0c;像素…

鸿蒙HarmonyOS NEXT开发:优化用户界面性能——组件复用(@Reusable装饰器)

文章目录 一、概述二、原理介绍三、使用规则四、复用类型详解1、标准型2、有限变化型2.1、类型1和类型2布局不同&#xff0c;业务逻辑不同2.2、类型1和类型2布局不同&#xff0c;但是很多业务逻辑公用 3、组合型4、全局型5、嵌套型 一、概述 组件复用是优化用户界面性能&#…

Windows中使用Docker安装Anythingllm,基于deepseek构建自己的本地知识库问答大模型,可局域网内多用户访问、离线运行

文章目录 Windows中使用Docker安装Anythingllm&#xff0c;基于deepseek构建自己的知识库问答大模型1. 安装 Docker Desktop2. 使用Docker拉取Anythingllm镜像2. 设置 STORAGE_LOCATION 路径3. 创建存储目录和 .env 文件.env 文件的作用关键配置项 4. 运行 Docker 命令docker r…

[SAP ABAP] OO ALV报表练习1

销售订单明细查询报表 业务目的&#xff1a;根据选择屏幕的筛选条件&#xff0c;使用 ALV 报表&#xff0c;显示销售订单详情 效果展示 用户的输入条件界面 用户的查询结果界面 涉及的主要功能点&#xff1a; 1.当在销售订单明细查询页面取不到任何数据时&#xff0c;在选择…

数据库高安全—数据保护:数据动态脱敏

书接上文数据库高安全—审计追踪&#xff1a;传统审计&统一审计&#xff0c;从传统审计和统一审计两方面对高斯数据库的审计追踪技术进行解读&#xff0c;本篇将从数据动态脱敏方面对高斯数据库的数据保护技术进行解读。 5.1 数据动态脱敏 数据脱敏&#xff0c;顾名思义就…

Datawhale 数学建模导论二 2025年2月

第6章 数据处理与拟合模型 本章主要涉及到的知识点有&#xff1a; 数据与大数据Python数据预处理常见的统计分析模型随机过程与随机模拟数据可视化 本章内容涉及到基础的概率论与数理统计理论&#xff0c;如果对这部分内容不熟悉&#xff0c;可以参考相关概率论与数理统计的…

记录 | WPF基础学习MVVM例子讲解1

目录 前言一、NotificationObject与数据属性创建个类&#xff0c;声明NotificationObject 二、DelegateCommand与命令属性三、View与ViewModel的交互&#xff08;难点&#xff09;在ViewModel文件下创建MainWindowViewModel数据和方法绑定资源指定 代码下载四、优势体现代码下载…

PyTorch 中 `torch.cuda.amp` 相关警告的解决方法

在最近的写代码过程中&#xff0c;遇到了两个与 PyTorch 的混合精度训练相关的警告信息。这里随手记录一下。 警告内容 警告 1: torch.cuda.amp.autocast FutureWarning: torch.cuda.amp.autocast(args...) is deprecated. Please use torch.amp.autocast(cuda, args...) i…