51nod 1022 石子合并v2
就是石子合并的数据范围变为了1e3
经典四边形优化区间dp
const int N = 2e3 + 10;
const long long inf = 1e18;
long long dp[N][N], sum[N];
int m[N][N], a[N];int main()
{int T = 1;//T = read();while (T --){int n;n = read();for (int i = 1; i <= 2 * n; i ++){if (i <= n)a[i] = read();elsea[i] = a[i - n];m[i][i] = i;sum[i] = sum[i - 1] + a[i];}for (int len = 2; len <= n; len ++)for (int l = 1; l + len - 1 <= 2 * n; l ++){int r = l + len - 1;long long ans = inf;for (int k = m[l][r - 1]; k <= min(m[l + 1][r], r - 1); k ++)if (dp[l][k] + dp[k + 1][r] + sum[r] - sum[l - 1] < ans){ans = dp[l][k] + dp[k + 1][r] + sum[r] - sum[l - 1];m[l][r] = k;}dp[l][r] = ans;}long long ans = inf;for (int i = 1; i <= n; i ++)ans = min(ans, dp[i][i + n - 1]);cout << ans;}return 0;
}
51nod 1022 石子合并v2相关推荐
- 51Nod 1021 石子合并 Label:Water DP
N堆石子摆成一条线.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价.计算将N堆石子合并成一堆的最小代价. 例如: 1 2 3 4,有不少 ...
- 石子合并[DP-N3]
题目描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1 ...
- CSP认证201612-4 压缩编码[C++题解]:区间dp、huffman树、石子合并
题目分析 来源:acwing 分析: 本题难在想到是区间dp.想到区间dp之后,这就是石子合并的代码直接默写. 那么是如何建模的呢?我们把huffman编码(这里要求按照字典序大小编码,和huffma ...
- 算法基础课-动态规划-区间dp-AcWing 282. 石子合并:区间dp
文章目录 题目分析 题目链接 题目分析 只能合并相邻两堆.求体力最小值 数据比较弱,最多300堆,每堆重量不超过1000. 状态表示 f[i][j]表示合并区间[i,j]需要的最小体力 状态转移 把区 ...
- NYOJ737 石子合并(一)区间动态规划
石子合并(一) 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆石子堆成 ...
- 【BZOJ 3229】 3229: [Sdoi2008]石子合并 (GarsiaWachs算法)
3229: [Sdoi2008]石子合并 Description 在一个操场上摆放着一排N堆石子.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合 ...
- SDNU 1048.石子合并2(区间dp)
Description 有n堆石子排成一圈,每次选择相邻的两堆石子,将其合并为一堆,记录该次合并的得分为两堆石子个数之和.已知每堆石子的石子个数,求当所有石子合并为一堆时,最小的总得分. Input ...
- SDNU 1045.石子合并1(区间dp)
Description 有n堆石子排成一行,每次选择相邻的两堆石子,将其合并为一堆,记录该次合并的得分为两堆石子个数之和.已知每堆石子的石子个数,求当所有石子合并为一堆时,最小的总得分. Input ...
- 石子合并(GarsiaWachs算法)
对于石子合并问题,有一个最好的算法,那就是GarsiaWachs算法.时间复杂度为O(n^2). 它的步骤如下: 设序列是stone[],从左往右,找一个满足stone[k-1] <= ston ...
最新文章
- 读博前三年0文章,后期发力一口气11篇一作!这个“90后”现任职985博导
- JS中三目运算符和if else的区别
- 《Visual C# 2010入门经典》一导读
- linux操作系统分析实验—基于mykernel的时间片轮转多道程序实现与分析
- 计算机视觉算法——Transformer学习笔记
- Spring源码:BeanDefinition
- 第二届构建之法论坛预告(草案)
- c语言 main函数
- (11)Zynq SPI控制器介绍
- stm32f4 usb 升级程序_51单片机程序下载、ISP及串口基础知识
- HSPICE与非门仿真
- buck电路的matlab仿真,buck电路simulink仿真
- 如何用安卓手机做代理服务器
- python简易语音助手
- 电脑插上U盘后不显示怎么办?
- 在Oracle DevGym上学习cx_Oracle的笔记
- 中国传媒大学计算机课程表,中国传媒大学新闻学院课程表.doc
- windows 7 cmd(ms DOS)命令窗口没有滚动条 还原CMD默认设置
- 【STC15】3路PWM波形输出示例演示
- 利用pearcmd.php本地文件包含(LFI)