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

AcWing 282. 石子合并

必看的视频讲解↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
【E28【模板】区间DP 石子合并——信息学竞赛算法】
在这里插入图片描述

合并过程总开销等于红色数字总和,可以理解为花费的总体力!
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
f数组的含义是f【i】【j】是从第i堆石子开始到第j堆石子的花费体力最小值
如何理解三层for呢?
第一层for是控制区间长度len,第二层for是控制区间起点位置i,第三层for是控制区间内的分割点的位置k
注意len必须从2开始!
s数组刚开始存储每堆石子的质量,后面用于存储前缀和,方便快速求取区间和的问题!
时间复杂度 O ( n 3 ) O(n^3) O(n3)

#include<iostream>
#include<algorithm>
#define N 310
using namespace std;
int n;
int f[N][N] , s[N];
int main(){cin >> n;for(int i = 1 ; i <= n ; ++ i) cin >> s[i] , s[i] += s[i - 1];for(int len = 2; len <= n; ++ len){for(int i = 1; i + len - 1 <= n; ++ i){int l = i , r = l + len - 1;f[l][r]=1e9;for(int k = l ; k < r ; ++ k){f[l][r] = min(f[l][r] , f[l][k] + f[k + 1][r] + s[r] - s[l - 1]);}}}cout << f[1][n];return 0;
}

http://www.mrgr.cn/news/17298.html

相关文章:

  • Codeforces Round 969 (Div. 2) ABCD
  • 半导体芯闻--20240901
  • 关键点检测(6)——yolov8-neck的搭建
  • python源码 PBOCMaster MAC的计算函数及计算过程 2des
  • JavaWeb JavaScript ⑩ 日程管理 第一期
  • 【研发日记】吃透新能源充电协议(一)——GB27930实例报文解析
  • P1880 [NOI1995] 石子合并【模板】区间DP
  • 广泛运用于各类恶劣环境的三防平板
  • AIGC时代算法工程师的面试秘籍(第二十一式2024.8.19-9.1) |【三年面试五年模拟】
  • IPv6配置实验(OSPFv3)
  • Git高手必备:掌握这些指令,轻松玩转版本控制(一)
  • Java 入门指南:Java 并发编程 —— AQS、AQLS、AOS 锁与同步器的框架
  • 图像识别智能垃圾桶项目开发--语音命令识别垃圾
  • Python 从入门到实战4(序列的操作)
  • 01:【stm32HAL】对GPIO的操作
  • simulink之显示信号属性
  • 利用程序来检测手机号活跃度
  • CCNA课笔记
  • GPT说【网络协议实践:HTTP】如何从服务器上发送一个pdf文件给客户端。
  • 3.数组容器