news 2026/5/30 19:29:28

区间DP第3课:区间DP应用案例实践2

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
区间DP第3课:区间DP应用案例实践2

区间DP第3课:区间DP应用案例实践2

题目描述

N NN个不同的正整数x 1 x_1x1,x 2 x_2x2, …,x N x_NxN排成一排,我们可以从左边或右边去掉连续的i ii( 1 ≤ i ≤ n ) (1 \le i \le n)(1in)个数(只能从两边删除数),剩下N − i N-iNi个数,再把剩下的数按以上操作处理,直到所有的数都被删除为止。

每次操作都有一个操作价值,比如现在要删除从i ii位置到k kk位置上的所有的数。操作价值为∣ x i − x k ∣ × ( k − i + 1 ) |x_i-x_k| \times (k-i+1)xixk×(ki+1),如果只去掉一个数,操作价值为这个数的值。
问如何操作可以得到最大值,求操作的最大价值。

输入格式

第一行为一个正整数N NN;

第二行有N NN个用空格隔开的N NN个不同的正整数。

输出格式

一行,包含一个正整数,为操作的最大值

输入输出样例 1
输入 1
6 54 29 196 21 133 118
输出 1
768
说明/提示

【样例解释和说明】

说明,经过3 33次操作可以得到最大值,第一次去掉前面3 33个数:54 545429 2929196 196196,操作价值为426 426426。第二次操作是在剩下的三个数( 21 , 133 , 118 ) (21,133,118)(21,133,118)中去掉最后一个数118 118118,操作价值为118 118118。第三次操作去掉剩下的2 22个数:21 2121133 133133,操作价值为224 224224。操作总价值为426 + 118 + 224 = 768 426+118+224=768426+118+224=768

【数据范围】

3 ≤ N ≤ 100 3≤N≤1003N1001 ≤ x i ≤ 1000 1 \le x_i \le 10001xi1000

方法思路

  1. 状态定义:定义dp[i][j]为删除从位置ij的所有数字所能获得的最大价值。
  2. 初始状态:当区间长度为1时,即i == j,此时的价值就是这个数字本身的值。
  3. 状态转移:对于每个区间[i, j],我们有两种选择:
    • 直接删除整个区间,其价值为abs(a[i] - a[j]) * (j - i + 1)
    • 将区间分割成两个子区间[i, k][k+1, j],并取这两个子区间价值的和的最大值。
  4. 递推顺序:按区间长度从小到大处理,逐步计算每个区间的最大价值。

解决代码

#include<bits/stdc++.h>usingnamespacestd;intn;intdp[110][110];intmain(){cin>>n;for(inti=1;i<=n;i++){cin>>a[i];}// 初始化长度为1的区间for(inti=1;i<=n;i++){dp[i][i]=a[i];}// 枚举区间长度for(intlen=2;len<=n;len++){for(inti=1;i+len-1<=n;i++){intj=i+len-1;// 计算直接删除整个区间的价值intval=abs(a[i]-a[j])*len;// 计算分割后的最大值intmax_split=0;for(intk=i;k<j;k++){max_split=max(max_split,dp[i][k]+dp[k+1][j]);}dp[i][j]=max(val,max_split);}}cout<<dp[1][n]<<endl;return0;}

代码解释

  1. 输入处理:读取输入的整数n和数组a
  2. 初始化:将所有长度为1的区间的最大价值初始化为该位置的值。
  3. 动态规划计算:按区间长度从小到大,逐步计算每个区间的最大价值。对于每个区间,计算直接删除整个区间的价值和分割后的子区间价值之和的最大值,并更新当前区间的最大价值。
  4. 输出结果:最终结果存储在dp[1][n]中,表示整个数组的最大操作价值。

完整系列资料,请查看专栏:《csp信奥赛C++动态规划》
https://blog.csdn.net/weixin_66461496/category_13096895.html

各种学习资料,助力大家一站式学习和提升!!!

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}
  • 一、CSP信奥赛C++通关学习视频课:
    • C++语法基础
    • C++语法进阶
    • C++算法
    • C++数据结构
    • CSP信奥赛数学
    • CSP信奥赛STL
  • 二、CSP信奥赛C++竞赛拿奖视频课:
    • 信奥赛csp-j初赛高频考点解析
    • CSP信奥赛C++复赛集训课(12大高频考点专题集训)
  • 三、考级、竞赛刷题题单及题解:
    • GESP C++考级真题题解
    • CSP信奥赛C++初赛及复赛高频考点真题解析
    • CSP信奥赛C++一等奖通关刷题题单及题解

详细内容:

1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):

https://edu.csdn.net/lecturer/7901 点击跳转


2、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/40437 点击跳转

3、csp信奥赛冲刺一等奖有效刷题题解:

CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

  • 2025 csp-j 复赛真题及答案解析(最新更新)
  • 2025 csp-x(山东) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(河南) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(辽宁) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(江西) 复赛真题及答案解析(最新更新)
  • 2025 csp-x(广西) 复赛真题及答案解析(最新更新)
  • 2020 ~ 2024 csp 复赛真题题单及题解
  • 2019 ~ 2022 csp-j 初赛高频考点真题分类解析
  • 2021 ~ 2024 csp-s 初赛高频考点解析
  • 2023 ~ 2024 csp-x (山东)初赛真题及答案解析
  • 2024 csp-j 初赛真题及答案解析
  • 2025 csp-j 初赛真题及答案解析(最新更新)
  • 2025 csp-s 初赛真题及答案解析(最新更新)
  • 2025 csp-x (山东)初赛真题及答案解析(最新更新)
  • 2025 csp-x (江西)初赛真题及答案解析(最新更新)
  • 2025 csp-x (辽宁)初赛真题及答案解析(最新更新)

CSP信奥赛C++一等奖通关刷题题单及题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转

  • 129 道刷题练习和详细题解,涉及:模拟算法、数学思维、二分算法、 前缀和、差分、深搜、广搜、DP专题、 树和图

4、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/29 20:39:12

4399小程序banner广告和插屏广告

banner广告// 获取真机设备像素比 const pixelRatio gamebox.getSystemInfoSync().pixelRatio;// 定义 Banner 广告的宽高和位置 const width 320 * pixelRatio; const height 50 * pixelRatio; const bannerLeft (gamebox.getSystemInfoSync().screenWidth * pixelRatio -…

作者头像 李华
网站建设 2026/5/29 20:35:37

Blender 3MF插件实战指南:从安装到精通

Blender 3MF插件实战指南&#xff1a;从安装到精通 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 想要在Blender中高效处理3D打印文件&#xff1f;3MF格式作为现代3D制造…

作者头像 李华
网站建设 2026/5/29 15:51:41

为什么顶级团队都在用Dify集成Spring AI?揭秘背后的架构优势

第一章&#xff1a;为什么顶级团队都在用Dify集成Spring AI&#xff1f;揭秘背后的架构优势在AI应用快速迭代的今天&#xff0c;顶级开发团队正转向Dify与Spring AI的深度集成方案&#xff0c;以实现敏捷开发与企业级能力的双重目标。这一组合不仅提升了AI服务的可维护性&#…

作者头像 李华
网站建设 2026/5/29 7:34:37

基于CANoe的CAPL语言打造UDS Bootloader刷写上位机程序

基于canoe的capl语言的uds bootloader刷写上位机程序 1、支持ISO15765通信&#xff1b; 2、支持BIN HEX S19格式的二进制文件解析&#xff1b; 3、可源码或二次开发&#xff1b; 4、可以定制刷写流程&#xff1b; 5、安全算法采用调用动态链接库dll方式&#xff0c;保证刷写安…

作者头像 李华
网站建设 2026/5/29 19:30:54

如何开发一个线上的电子画册在线生成系统?

温馨提示&#xff1a;文末有资源获取方式当前&#xff0c;企业数字化转型中一个显性且普遍的需求&#xff0c;正是将传统宣传物料升级为数字交互载体——电子画册。面对这一高达95%企业覆盖率的市场&#xff0c;拥有一套属于自己的、可灵活定制和无限扩展的“生产工具”&#x…

作者头像 李华
网站建设 2026/5/29 5:11:10

DownKyi:简单快速的B站视频批量下载完整指南

DownKyi&#xff1a;简单快速的B站视频批量下载完整指南 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#xff09;。 …

作者头像 李华