题目描述 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相关推荐

  1. 区间DP解析超详细版!!街边老奶奶也喜欢看的好博客

    区间DP解析超详细版!! 文章目录 区间DP解析超详细版!! 1. 概念入门 2. 线性石子归并 3. 环形石子归并 4. 奇怪的题题目目 5. 区间DP的优化 附录 在上章 背包 (<-点击传 ...

  2. 区间DP之环形石子合并

    环形石子合并 题目传送门 题目描述 将 n 堆石子绕圆形操场排放,现要将石子有序地合并成一堆. 规定每次只能选相邻的两堆合并成新的一堆,并将新的一堆的石子数记做该次合并的得分. 请编写一个程序,读入堆 ...

  3. AcWing 1068. 环形石子合并(环形区间DP)

    AcWing 1068. 环形石子合并(环形区间DP) 一.问题 二.思路 三.代码 一.问题 二.思路 在讲解这道题之前,我们需要先掌握线性的区间DP问题,如果对于线性区间DP的解决方式还不了解的话 ...

  4. 【codevs1048】【codevs115406TG】石子归并、能量项链,序列dp的典型题目

    1048 石子归并 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 有n堆石子排成一列,每堆石子有一个重量w[i], 每次合并 ...

  5. Codevs 3002 石子归并 3(DP四边形不等式优化)

    3002 石子归并 3 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description 有n堆石子排成一列,每堆石子有一个重量w[i], 每次 ...

  6. 石子合并/能量项链【区间dp】

    题目链接:http://www.51mxd.cn/problem.php-pid=737.htm 题目大意:给出n个石子堆以及这n个石子堆中石子数目,每次操作合并两个相邻的石子堆,代价为两个石子堆数目 ...

  7. AcWing 320. 能量项链(环形区间DP)

    AcWing 320. 能量项链(环形区间DP) 一. 问题: 二.分析: 三.代码 一. 问题: 二.分析: 在讲解这道题之前,大家需要对线性区间DP和环形区间DP有一定的了解,因此如果不会这两个知 ...

  8. CSP认证201612-4 压缩编码[C++题解]:区间dp、huffman树、石子合并

    题目分析 来源:acwing 分析: 本题难在想到是区间dp.想到区间dp之后,这就是石子合并的代码直接默写. 那么是如何建模的呢?我们把huffman编码(这里要求按照字典序大小编码,和huffma ...

  9. Leetcode1690. 石子游戏 VII[C++题解]:带有博弈论的区间dp

    文章目录 题目分析 状态表示 状态转移 题目链接 题目分析 补充博弈论的做题想法:让最坏情况下最好.在很多决策中,考虑所有的最坏情况,选其中最好的一个. 本题分析: 刚开始因为是个贪心题目,两个人每次 ...

最新文章

  1. 【转】 Android快速开发系列 10个常用工具类 -- 不错
  2. ARKit 与 ARCore比对(三)
  3. Tomcat的下载安装以及在eclipse中的配置
  4. PHP实进程池,swoole_process实现进程池的方法示例
  5. play框架配置 拦截器_如何使用Play框架为https配置SSL证书
  6. linux6.5安装oracle,linux [CentOS 6.5]下安装oracle
  7. textarea如何实现高度自适应?
  8. python极客项目编程 豆瓣_《Python极客项目编程》
  9. mysql insert ignore into 与replace 避免重复插入
  10. iOS:SideTable
  11. 熊猫烧香病毒分析报告
  12. Python——付费/版权歌曲下载
  13. 免费的固定资产管理软件|免费的固定资产管理软件哪个好?
  14. 刘汝佳--WERTY
  15. ffmpeg给视频添加文字
  16. 【论文简述及翻译】RAFT: Recurrent All-Pairs Field Transforms for Optical Flow(ECCV 2020)
  17. java 通过onvif抓取海康摄像头图片
  18. 如何使用python进行等额本金-等额本息贷款计算
  19. 电脑显示无网络,刷新DNS解析缓存
  20. 7070mt安装ubuntu dell_戴尔(dell)7070MT台式机装win7系统及分区教程(支持usb驱动)

热门文章

  1. [机器学习-概念篇]彻底搞懂信息量,熵、相对熵、交叉熵
  2. python和nltk自然语言处理书评_python自然语言处理_自然语言处理入门
  3. leetcode - 1024. 视频拼接
  4. access vba 用recordset读取表中数据的简单方法
  5. CMFCPropertySheet的使用及PROPSHEETHEADER结构体介绍
  6. python给excel排序_如何使用Python对Excel工作表排序
  7. java反射po转vo_Java项目的(PO,VO,TO,BO,DAO,POJO)解释(转)
  8. vhdl和c语言,VHDL语言中的信号、变量与常量异同比较(转)
  9. 云服务器怎么管理文件,怎么管理云服务器的文件
  10. c语言递归求塔移动次数,c语言递归调用汉诺塔