题目描述

在一个圆形操场的四周摆放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,f[i][j]表示i到j这一段合并成一堆的最大值,f[i][j] = max(f[i][j], f[i][k] + f[k+1][j] + sum[i+1][j]) i<=k<j,对于环形的处理是把这个环复制,接到末尾,其中sum[i+1][j]表示a[i] + a[i+1] + .. + a[j].
AC代码:
 #include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int n,f1[][],f2[][],num[],maxans,minans = ,he[];//f1为最大值,f2为最小值
int max(int a,int b) {
if(a >= b) return a;
else return b;
}
int min(int a,int b) {
if(a <= b) return a;
else return b;
}
int main()
{
cin >> n;
memset(f2,0x7f7f7f,sizeof(f2));//将最小值初始位足够大
for(int i = ; i <= n; i++) {//读入
scanf("%d",&num[i]);
he[i] = he[i-] + num[i];
f2[i][i] = ;
}
for(int i = n+; i <= n+n; i++) {//将这个环复制一遍接到末尾
num[i] = num[i-n];
he[i] = he[i-] + num[i];
f2[i][i] = ;
}
for(int p = ; p < n; p++)//枚举区间长度
for(int i = , j = i + p; i < n + n && j < n + n; i++, j = i + p)//枚举起点和终点
for(int k = i; k < j; k++){//设置断点
f1[i][j] = max(f1[i][j], f1[i][k] + f1[k+][j] + he[j] - he[i-]);//状态转移
f2[i][j] = min(f2[i][j], f2[i][k] + f2[k+][j] + he[j] - he[i-]);//状态转移
} for(int i = ; i <= n; i++) {//找最大值和最小值
maxans = max(maxans,f1[i][i+n-]);
minans = min(minans,f2[i][i+n-]);
}
printf("%d\n%d",minans,maxans); return ;
}



最新文章

  1. OpenCV2.4.13+VS2013开发环境配置
  2. MVC3.0----整理之一
  3. 从零开始山寨Caffe&#183;贰:主存模型
  4. 神奇的Noip模拟试题 T3 科技节 位运算
  5. WinForm-利用Anchor和Dock属性缩放控件
  6. 你想建设一个能承受500万PV/每天的网站吗?服务器每秒要处理多少个请求才能应对?
  7. decimal类型数据如何保留两位小数
  8. Mysql事务及行级锁的理解
  9. Ajax请求用户控件(.ascx)404错误
  10. vistual studio 2012 安装失败,提示Microsoft Vistual Studio 2012 Devenv找不到元素,等错误信息
  11. Code First 启用迁移时出错 HRESULT:0x80131040
  12. 高效工作的秘诀——Doit.im使用总结报告
  13. 内核知识第12讲,SSDT表.以用户模式到系统模式的两种方式.
  14. Java数据持久层框架 MyBatis之API学习九(SQL语句构建器详解)
  15. nginx----------nginx日志详细分解
  16. ES5 map循环一大坑:循环遍历竟然出现逗号!
  17. windows下tomcat+nginx+openssl配置双向认证
  18. PHP只显示姓名首尾字符,隐藏中间字符并用*替换
  19. 2.3 linux中的信号分析 阻塞、未达
  20. linux --&gt; 删除指定目录下所有文件

热门文章

  1. 华中农业大学第四届程序设计大赛网络同步赛-1020: Arithmetic Sequence,题挺好的,考思路;
  2. 【small项目】MySQL第二天早上第一次连接超时报错,解决方法com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
  3. Linux下汇编语言学习笔记3 ---
  4. codevs——1017 乘积最大
  5. 创建简单的spring-mvc项目
  6. linux network name space
  7. CentOS 7 es搭建测试
  8. win7 多用户远程登录
  9. Android 实现形态各异的双向側滑菜单 自己定义控件来袭
  10. hdu 1009 FatMouse&amp;#39; Trade