To 洛谷.1880 石子合并

题目描述

在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。

试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分.

输入输出格式

输入格式:

数据的第1行试正整数N,1≤N≤100,表示有N堆石子.第2行有N个数,分别表示每堆石子的个数.

输出格式:

输出共2行,第1行为最小得分,第2行为最大得分.

输入输出样例

输入样例#1:

4
4 5 9 4

输出样例#1:

43
54

代码:

先拆环为链,再做区间DP。

 1 #include<cstdio>
 2 #include<iostream>
 3 #define maxn 206
 4 using namespace std;
 5 int n,sum[maxn];
 6 int dpmin[maxn][maxn],dpmax[maxn][maxn];
 7 int main()
 8 {
 9     scanf("%d",&n);
10     for(int a,i=1;i<=n;i++)
11     {
12         scanf("%d",&a);
13         sum[i]=sum[i-1]+a;
14         sum[i+n]=sum[i];
15     }
16     for(int i=1;i<n;i++)
17       sum[i+n]+=sum[n];
18     for(int len=1;len<n;len++)
19       for(int i=1;i<=n*2-1-len;i++)
20       {
21             int j=i+len;
22             int res1=0x7fffffff;
23             int res2=-123456789;
24             for(int k=i;k<j;k++)
25             {
26               res1=min(res1,dpmin[i][k]+dpmin[k+1][j]+sum[j]-sum[i-1]);
27                 res2=max(res2,dpmax[i][k]+dpmax[k+1][j]+sum[j]-sum[i-1]);
28           }
29             dpmin[i][j]=res1;
30             dpmax[i][j]=res2;
31       }
32     int MIN=0x7fffffff,MAX=0;
33     for(int i=1;i<=n;i++)
34        MIN=min(dpmin[i][i+n-1],MIN),MAX=max(dpmax[i][i+n-1],MAX);//!dp[i][i+n-1]
35     printf("%d\n%d",MIN,MAX);
36     return 0;
37 }

转载于:https://www.cnblogs.com/SovietPower/p/6893648.html

洛谷P1880 石子合并(区间DP)(环形DP)相关推荐

  1. 洛谷P1775 石子合并(弱化版)

    原题传送门 题目描述 设有 N(N≤300)N(N \le 300)N(N≤300) 堆石子排成一排,其编号为1,2,3,⋯,N1,2,3,\cdots,N1,2,3,⋯,N.每堆石子有一定的质量 m ...

  2. 【动态规划】 石子合并问题(环形) (ssl 1597)

    石子合并问题石子合并问题石子合并问题 Description 在一个圆形操场的四周摆放着n 堆石子.现要将石子有次序地合并成一堆.规定每次只能选相邻的2 堆石子合并成新的一堆,并将新的一堆石子数记为该 ...

  3. [洛谷 1365] WJMZBMR打osu! / Easy {期望DP}

    题目 https://www.luogu.org/problemnew/show/P1365 解题思路 这是我做的第三道期望DP.跟前两道的不同之处,在于它连续的一段具有不确定性且没有给出n的范围.所 ...

  4. 石子合并(洛谷-P1880)

    题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1 ...

  5. 洛谷 P1063 能量项链 区间dp

    洛谷 P1063 题意:在一串项链中,是环状的,第 i 颗珠子有两个能量a[i]和a[i+1],第i+1颗珠子有两个能量a[i+1]和a[i+2],可以合并两个珠子,得到a[i]*a[i+1]*a[i ...

  6. AcWing.282石子合并(区间DP)题解

    石子合并 题目描述 设有N堆石子排成一排,其编号为1,2,3,-,N. 每堆石子有一定的质量,可以用一个整数来描述,现在要将这N堆石子合并成为一堆. 每次只能合并相邻的两堆,合并的代价为这两堆石子的质 ...

  7. 石子合并——最经典的dp问题

    石子合并三大题型 任意两堆石子合并,直接手写一个小根堆,每次取前面两个相加,得到的值继续放入优先队列中,直到里面只有一个元素就输出 只能合并相邻两堆石子,这就类似于矩阵连乘(传送门),不过还是有一些差 ...

  8. [USACO18JAN]Lifeguards P 洛谷黑题,单调队列优化DP

    传送门:戳我 这道题有两个版本,S和P,S是K等于1的情况,显然可以用线段树水过. P版本就难了很多,洛谷黑题(NOI/NOI+/CTSC),嘿嘿. 我自己也不是很理解,照着题解写了一遍,然后悟到了一 ...

  9. 洛谷1594 护卫队_区间dp_题解

    护卫队 出自洛谷题库 https://www.luogu.com.cn/problem/P1594 [问题描述] 不是具体题目 大概就是有n个车要过河,只有一个桥(理论上只能单向通行,其实不用管对面) ...

  10. 【洛谷 P4934】 礼物 (位运算+DP)

    题目链接 位运算+\(DP\)=状压\(DP\)?(雾 \(a\&b>=min(a,b)\)在集合的意义上就是\(a\subseteq b\) 所以对每个数的子集向子集连一条边,然后答案 ...

最新文章

  1. html es表达式传参,ES2015 正则表达式新增特性
  2. elasticsearch插件(4)
  3. mysqlimport
  4. vs2013 error MSB8031 MBCSMFC问题的解决
  5. css实现排序升降图标
  6. 【idea】 Unsupported class file major version 57
  7. JavaScript文档对象模型document对象改变Html表单属性(4)
  8. mysql书籍知识点梳理3(数据与表)
  9. 3D数学基础 简要归纳
  10. clark变换和park变换【1】
  11. HTML5表单技术 调查问卷设计
  12. 假如古人用上了区块链技术
  13. 无插件使用Eclipse和Resin调试WEB应用(Debug Web App In Ecli...
  14. #读书笔记#《富爸爸窮爸爸》 | Rich Dad Poor Dad 罗伯特.清崎 Robert Kiyosaki
  15. M - Maratona Brasileira de Popcorn(SDUT 2019 Autumn Team Contest 6th)
  16. SQL Server2012 提示不允许保存更改,您所做的更改要求删除并重新创建以下表 的解决办法
  17. OpenGL之三维GIS
  18. 【python】如何快速生成26位字母表?这里看过来。
  19. 国科大学习资料--最优化计算方法(王晓)--第六次作业答案
  20. 如何创建自己的云盘-私有云盘

热门文章

  1. python 闭包,装饰器,random,os,sys,shutil,shelve,ConfigParser,hashlib模块
  2. The following IP can be used to access Google website
  3. BZOJ 1106: [POI2007]立方体大作战tet 树状数组 + 贪心
  4. 使用本机IP调试web项目
  5. ehcache 在web项目中使用
  6. C# decimal保留指定的小数位数,不四舍五入
  7. java 25 - 2 网络编程之 网络通信三要素
  8. 利用java实现一个简单的远程监控程序
  9. 将Excel文件数据导入到SqlServer数据库的三种方案
  10. 作为大数据开发中最重要技术,spark需要掌握哪些技能呢