时间限制: 10 s
 空间限制: 256000 KB
 题目等级 : 黄金 Gold
 查看运行结果
 
 
题目描述 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

数据范围及提示 Data Size & Hint

经典的区间动态规划。

 #include <algorithm>
#include <cstdio>
#define N 1015 using namespace std; bool if_;
char ch;
int n,num[N];
int maxn,minn=1e7;
int f_max[N][N],f_min[N][N]; void read(int &x)
{
if_=;x=;
ch=getchar();
while(ch<''||ch>'')
{
if(ch=='-') if_=;
ch=getchar();
}
while(ch>=''&&ch<='')
{
x=x*+ch-'';
ch=getchar();
}
if(if_) x=(~x)+;
} int main()
{
read(n);
for(int i=;i<=n;i++)
read(num[i]),num[i+n]=num[i],num[i]+=num[i-];
for(int i=n+;i<=n*;i++) num[i]+=num[i-];
for(int i=;i<=n;i++)
f_min[i][i]=f_max[i][i]=;
for(int len=;len<=n;len++)
for(int i=*n-len;i>=;i--)
{
int j=len+i-;
f_min[i][j]=1e7;
f_max[i][j]=;
for(int k=i;k<j;k++)
{
f_min[i][j]=min(f_min[i][j],f_min[i][k]+f_min[k+][j]+num[j]-num[i-]);
f_max[i][j]=max(f_max[i][j],f_max[i][k]+f_max[k+][j]+num[j]-num[i-]);
}
}
for(int i=;i<=n;i++)
{
if(f_min[i][i+n-]<minn) minn=f_min[i][i+n-];
if(f_max[i][i+n-]>maxn) maxn=f_max[i][i+n-];
}
printf("%d\n%d",minn,maxn);
return ;
}

codevs——T2102 石子归并 2的更多相关文章

  1. Codevs 1048 石子归并

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

  2. codevs 2102 石子归并2

    传送门 2102 石子归并 2  时间限制: 10 s  空间限制: 256000 KB  题目等级 : 黄金 Gold   题目描述 Description 在一个园形操场的四周摆放N堆石子,现要将 ...

  3. codevs 1048石子归并

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

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

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

  5. codevs——1048 石子归并 (区间DP)

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

  6. codevs——T1048 石子归并

     http://codevs.cn/problem/1048/  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Descriptio ...

  7. CODEVS 2102 石子归并 2

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

  8. codevs——2102 石子归并 2(区间DP)

    时间限制: 10 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 在一个园形操场的四周摆放N堆石子,现要将石子有次序地 ...

  9. 1048 石子归并codevs

    1048 石子归并codevs 题目描述 Description 有n堆石子排成一列,每堆石子有一个重量w[i], 每次合并可以合并相邻的两堆石子,一次合并的代价为两堆石子的重量和w[i]+w[i+1 ...

随机推荐

  1. 字符串函数---strcmp()与strncmp()详解及实现【转】

    本文转载自:http://blog.csdn.net/lanzhihui_10086/article/details/39829623 一.strcmp()与strncmp() strcmp():st ...

  2. vs2015+ffmpeg开发环境配置【转】

    本文转载自:http://blog.csdn.net/hustlx/article/details/51014307 1.在http://ffmpeg.zeranoe.com/builds/ 下载最新 ...

  3. 杂项:DS(目录服务)

    ylbtech-杂项:DS(目录服务) 1.返回顶部 1. DS(目录服务). 目录服务管理概述: 目录服务是扩展计算机系统中最重要的组件之一.虽然用户和管理通常不知道他们感兴趣对象的确切名称,但他们 ...

  4. js作业

    1.一张纸的厚度是0.0001米,将纸对折,对折多少次厚度超过珠峰高度8848米var sum=0;i=0;a=0.0001;for(i=0;i<100;i++){ a=a*2; sum=sum ...

  5. 第7章 性能和可靠性模式 Server Clustering(服务器群集)

    上下文 您正在设计要部署应用程序的基础结构层.运行要求包括无法满足的可用性或性能能力,因为基础结构中存在性能瓶颈或故障单点. 影响因素 设计基础结构时,请考虑下列影响因素: 用户希望在使用应用程序时这 ...

  6. Monad的重点

    Monad是非常强有力的概念,在介绍Monad是什么和如何工作的之前,我们应该先确认Monad能解决什么问题.Monad是各种编程问题的的 meta solution,它不是某种特定问题的解决方案,我 ...

  7. Junit使用第二弹

    实例总结 1. 参数化测试 有时一个测试方法,不同的参数值会产生不同的结果,那么我们为了测试全面,会把多个参数值都写出来并一一断言测试,这样有时难免费时费力,这是我们便可以采用参数化测试来解决这个问题 ...

  8. Linux 中文件名颜色所代表的属性

    1. 白色:表示一般文件 2. 蓝色:表示目录 3. 绿色:表示可执行的文件或程序 4. 浅蓝色:表示链接文件 5. 黄色:表示设备文件 6. 灰色:表示其他类型文件 7. 红色:表示压缩文件或者包文 ...

  9. VGG 19

    关于VGG19的一些参考资料 http://www.cnblogs.com/vipyoumay/archive/2017/11/23/7884472.html https://cloud.tencen ...

  10. Django 了解

    Django是一个开放源代码的Web应用框架 Django也是一个基于 MVC 构造的框架. 但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Mod ...