区间DP{环形}:石子归并-2
题目描述 Description 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。 试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分. 输入描述 Input Description 数据的第1行试正整数N,1≤N≤100,表示有N堆石子.第2行有N个数,分别表示每堆石子的个数. 输出描述 Output Description 输出共2行,第1行为最小得分,第2行为最大得分. 样例输入 Sample Input 4 4 4 5 9 样例输出 Sample Output 43 54 这道题和石子归并1一样,转移方程为f[i,j]:=f[i,k-1]+f[k,j]+sum[i,j]; 但由于这道题是环形的,所以与石子归并1也有不同, 可以将数组扩展,求从1~n,2~n+1,...,n~2*n-1的最小得分,再从中取最小值。 最大值方法相同。 代码 var stone:array[1..200]of longint; sum,f:array[0..200,1..200]of longint; f2:array[0..200,1..200]of longint; max,maxx:longint; minx,h,min:longint; i,j,k,l,n:longint; begin readln(n); for i:=1 to n do read(stone[i]); for i:=1 to n-1 do stone[i+n]:=stone[i]; fillchar(sum,sizeof(sum),0); for i:=1 to 2*n-1 do begin sum[i,i]:=stone[i]; for j:=i+1 to i+n-1 do sum[i,j]:=sum[i,j-1]+stone[j]; end; for i:=1 to n do begin for j:=i+n-1-1 downto i do for k:=j+1 to i+n-1 do begin min:=maxlongint; max:=0; for l:=j+1 to k do begin if f[j,l-1]+f[l,k]+sum[j,k]max then max:=f2[j,l-1]+f2[l,k]+sum[j,k];
end; f[j,k]:=min; f2[j,k]:=max; end; end; minx:=maxlongint; for i:=1 to n do begin if minx>f[i,i+n-1] then minx:=f[i,i+n-1]; end; maxx:=0; for i:=1 to n do if maxx<f2[i,i+n-1] then maxx:=f2[i,i+n-1]; writeln(minx); writeln(maxx); end.
转载于:https://www.cnblogs.com/spiderKK/p/4278391.html
区间DP{环形}:石子归并-2相关推荐
- 区间DP解析超详细版!!街边老奶奶也喜欢看的好博客
区间DP解析超详细版!! 文章目录 区间DP解析超详细版!! 1. 概念入门 2. 线性石子归并 3. 环形石子归并 4. 奇怪的题题目目 5. 区间DP的优化 附录 在上章 背包 (<-点击传 ...
- 区间DP之环形石子合并
环形石子合并 题目传送门 题目描述 将 n 堆石子绕圆形操场排放,现要将石子有序地合并成一堆. 规定每次只能选相邻的两堆合并成新的一堆,并将新的一堆的石子数记做该次合并的得分. 请编写一个程序,读入堆 ...
- AcWing 1068. 环形石子合并(环形区间DP)
AcWing 1068. 环形石子合并(环形区间DP) 一.问题 二.思路 三.代码 一.问题 二.思路 在讲解这道题之前,我们需要先掌握线性的区间DP问题,如果对于线性区间DP的解决方式还不了解的话 ...
- 【codevs1048】【codevs115406TG】石子归并、能量项链,序列dp的典型题目
1048 石子归并 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 有n堆石子排成一列,每堆石子有一个重量w[i], 每次合并 ...
- Codevs 3002 石子归并 3(DP四边形不等式优化)
3002 石子归并 3 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description 有n堆石子排成一列,每堆石子有一个重量w[i], 每次 ...
- 石子合并/能量项链【区间dp】
题目链接:http://www.51mxd.cn/problem.php-pid=737.htm 题目大意:给出n个石子堆以及这n个石子堆中石子数目,每次操作合并两个相邻的石子堆,代价为两个石子堆数目 ...
- AcWing 320. 能量项链(环形区间DP)
AcWing 320. 能量项链(环形区间DP) 一. 问题: 二.分析: 三.代码 一. 问题: 二.分析: 在讲解这道题之前,大家需要对线性区间DP和环形区间DP有一定的了解,因此如果不会这两个知 ...
- CSP认证201612-4 压缩编码[C++题解]:区间dp、huffman树、石子合并
题目分析 来源:acwing 分析: 本题难在想到是区间dp.想到区间dp之后,这就是石子合并的代码直接默写. 那么是如何建模的呢?我们把huffman编码(这里要求按照字典序大小编码,和huffma ...
- Leetcode1690. 石子游戏 VII[C++题解]:带有博弈论的区间dp
文章目录 题目分析 状态表示 状态转移 题目链接 题目分析 补充博弈论的做题想法:让最坏情况下最好.在很多决策中,考虑所有的最坏情况,选其中最好的一个. 本题分析: 刚开始因为是个贪心题目,两个人每次 ...
最新文章
- 【转】 Android快速开发系列 10个常用工具类 -- 不错
- ARKit 与 ARCore比对(三)
- Tomcat的下载安装以及在eclipse中的配置
- PHP实进程池,swoole_process实现进程池的方法示例
- play框架配置 拦截器_如何使用Play框架为https配置SSL证书
- linux6.5安装oracle,linux [CentOS 6.5]下安装oracle
- textarea如何实现高度自适应?
- python极客项目编程 豆瓣_《Python极客项目编程》
- mysql insert ignore into 与replace 避免重复插入
- iOS:SideTable
- 熊猫烧香病毒分析报告
- Python——付费/版权歌曲下载
- 免费的固定资产管理软件|免费的固定资产管理软件哪个好?
- 刘汝佳--WERTY
- ffmpeg给视频添加文字
- 【论文简述及翻译】RAFT: Recurrent All-Pairs Field Transforms for Optical Flow(ECCV 2020)
- java 通过onvif抓取海康摄像头图片
- 如何使用python进行等额本金-等额本息贷款计算
- 电脑显示无网络,刷新DNS解析缓存
- 7070mt安装ubuntu dell_戴尔(dell)7070MT台式机装win7系统及分区教程(支持usb驱动)
热门文章
- [机器学习-概念篇]彻底搞懂信息量,熵、相对熵、交叉熵
- python和nltk自然语言处理书评_python自然语言处理_自然语言处理入门
- leetcode - 1024. 视频拼接
- access vba 用recordset读取表中数据的简单方法
- CMFCPropertySheet的使用及PROPSHEETHEADER结构体介绍
- python给excel排序_如何使用Python对Excel工作表排序
- java反射po转vo_Java项目的(PO,VO,TO,BO,DAO,POJO)解释(转)
- vhdl和c语言,VHDL语言中的信号、变量与常量异同比较(转)
- 云服务器怎么管理文件,怎么管理云服务器的文件
- c语言递归求塔移动次数,c语言递归调用汉诺塔