洛谷P1880 石子合并(区间DP)(环形DP)
To 洛谷.1880 石子合并
题目描述
在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。
试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分.
输入输出格式
输入格式:
数据的第1行试正整数N,1≤N≤100,表示有N堆石子.第2行有N个数,分别表示每堆石子的个数.
输出格式:
输出共2行,第1行为最小得分,第2行为最大得分.
输入输出样例
4 4 5 9 4
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)相关推荐
- 洛谷P1775 石子合并(弱化版)
原题传送门 题目描述 设有 N(N≤300)N(N \le 300)N(N≤300) 堆石子排成一排,其编号为1,2,3,⋯,N1,2,3,\cdots,N1,2,3,⋯,N.每堆石子有一定的质量 m ...
- 【动态规划】 石子合并问题(环形) (ssl 1597)
石子合并问题石子合并问题石子合并问题 Description 在一个圆形操场的四周摆放着n 堆石子.现要将石子有次序地合并成一堆.规定每次只能选相邻的2 堆石子合并成新的一堆,并将新的一堆石子数记为该 ...
- [洛谷 1365] WJMZBMR打osu! / Easy {期望DP}
题目 https://www.luogu.org/problemnew/show/P1365 解题思路 这是我做的第三道期望DP.跟前两道的不同之处,在于它连续的一段具有不确定性且没有给出n的范围.所 ...
- 石子合并(洛谷-P1880)
题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分. 试设计出1个算法,计算出将N堆石子合并成1 ...
- 洛谷 P1063 能量项链 区间dp
洛谷 P1063 题意:在一串项链中,是环状的,第 i 颗珠子有两个能量a[i]和a[i+1],第i+1颗珠子有两个能量a[i+1]和a[i+2],可以合并两个珠子,得到a[i]*a[i+1]*a[i ...
- AcWing.282石子合并(区间DP)题解
石子合并 题目描述 设有N堆石子排成一排,其编号为1,2,3,-,N. 每堆石子有一定的质量,可以用一个整数来描述,现在要将这N堆石子合并成为一堆. 每次只能合并相邻的两堆,合并的代价为这两堆石子的质 ...
- 石子合并——最经典的dp问题
石子合并三大题型 任意两堆石子合并,直接手写一个小根堆,每次取前面两个相加,得到的值继续放入优先队列中,直到里面只有一个元素就输出 只能合并相邻两堆石子,这就类似于矩阵连乘(传送门),不过还是有一些差 ...
- [USACO18JAN]Lifeguards P 洛谷黑题,单调队列优化DP
传送门:戳我 这道题有两个版本,S和P,S是K等于1的情况,显然可以用线段树水过. P版本就难了很多,洛谷黑题(NOI/NOI+/CTSC),嘿嘿. 我自己也不是很理解,照着题解写了一遍,然后悟到了一 ...
- 洛谷1594 护卫队_区间dp_题解
护卫队 出自洛谷题库 https://www.luogu.com.cn/problem/P1594 [问题描述] 不是具体题目 大概就是有n个车要过河,只有一个桥(理论上只能单向通行,其实不用管对面) ...
- 【洛谷 P4934】 礼物 (位运算+DP)
题目链接 位运算+\(DP\)=状压\(DP\)?(雾 \(a\&b>=min(a,b)\)在集合的意义上就是\(a\subseteq b\) 所以对每个数的子集向子集连一条边,然后答案 ...
最新文章
- html es表达式传参,ES2015 正则表达式新增特性
- elasticsearch插件(4)
- mysqlimport
- vs2013 error MSB8031 MBCSMFC问题的解决
- css实现排序升降图标
- 【idea】 Unsupported class file major version 57
- JavaScript文档对象模型document对象改变Html表单属性(4)
- mysql书籍知识点梳理3(数据与表)
- 3D数学基础 简要归纳
- clark变换和park变换【1】
- HTML5表单技术 调查问卷设计
- 假如古人用上了区块链技术
- 无插件使用Eclipse和Resin调试WEB应用(Debug Web App In Ecli...
- #读书笔记#《富爸爸窮爸爸》 | Rich Dad Poor Dad 罗伯特.清崎 Robert Kiyosaki
- M - Maratona Brasileira de Popcorn(SDUT 2019 Autumn Team Contest 6th)
- SQL Server2012 提示不允许保存更改,您所做的更改要求删除并重新创建以下表 的解决办法
- OpenGL之三维GIS
- 【python】如何快速生成26位字母表?这里看过来。
- 国科大学习资料--最优化计算方法(王晓)--第六次作业答案
- 如何创建自己的云盘-私有云盘
热门文章
- python 闭包,装饰器,random,os,sys,shutil,shelve,ConfigParser,hashlib模块
- The following IP can be used to access Google website
- BZOJ 1106: [POI2007]立方体大作战tet 树状数组 + 贪心
- 使用本机IP调试web项目
- ehcache 在web项目中使用
- C# decimal保留指定的小数位数,不四舍五入
- java 25 - 2 网络编程之 网络通信三要素
- 利用java实现一个简单的远程监控程序
- 将Excel文件数据导入到SqlServer数据库的三种方案
- 作为大数据开发中最重要技术,spark需要掌握哪些技能呢