题目描写叙述 Description

有n堆石子排成一列,每堆石子有一个重量w[i], 每次合并可以合并相邻的两堆石子。一次合并的代价为两堆石子的重量和w[i]+w[i+1]。

问安排如何的合并顺序,可以使得总合并代价达到最小。

输入描写叙述 Input Description

第一行一个整数n(n<=100)

第二行n个整数w1,w2...wn  (wi <= 100)

输出描写叙述 Output Description

一个整数表示最小合并代价

例子输入 Sample Input

4

4 1 1 4

例子输出 Sample Output

18

以相邻的石头堆来合并,相当于在一个串中割两半,能够用dp[i][j]表示序号从i到j的石头堆合并的最小cost。

dp[i][j]=dp[i][k]+dp[k+1][j]+sum[i][j](i<k<=j)。当中sum[i][j]代表序号i到j石头堆的重量和。我认为理论上搜索和循环都能做,我用的是搜索,写起来简单无脑。

#include <bits/stdc++.h>
using namespace std;
int vis[102][102];
int n;
int stone[102];
void init(){
for(int i=1;i<=102;i++)
for(int j=1;j<=102;j++)
vis[i][j]=9999999;
}
int dp(int i,int j){
if(vis[i][j]<9999999)
return vis[i][j]; if(j-i==1){
vis[i][j]=stone[i]+stone[j];
return vis[i][j];
}
if(i==j){
vis[i][i]=0;
return 0;
}
for(int k=i+1;k<=j;k++){
int sum=0;
for(int i1=i;i1<=j;i1++)
sum+=stone[i1];
vis[i][j]=min(vis[i][j],dp(i,k-1)+dp(k,j)+sum);
}
return vis[i][j];
} int main(){
init();
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&stone[i]);
}
printf("%d\n",dp(1,n));
}

code[VS] 1048 石子归并的更多相关文章

  1. codevs 1048石子归并

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

  2. Codevs 1048 石子归并

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

  3. 1048 石子归并codevs

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

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

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

  5. wikioi 1048 石子归并

    dp[i][j]=min(dp[i][j],dp[i][k],dp[k+1][j]+sum[i][j]); 表示i-j的最小合并代价. #include <iostream> #inclu ...

  6. AC日记——石子归并 codevs 1048

    1048 石子归并  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 有n堆石子排成一列,每堆石子 ...

  7. Codevs_1048_石子归并_(动态规划)

    描述 http://codevs.cn/problem/1048/  1048 石子归并 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold       题目描述 Des ...

  8. codevs1048石子归并

    codevs1048 石子归并  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 传送门  http://codevs.cn/problem/1048/ 题目描述 ...

  9. [51nod 1022] 石子归并v2 [dp+四边形不等式优化]

    题面: 传送门 思路: 加强版的石子归并,现在朴素的区间dp无法解决问题了 首先我们破环成链,复制一条一样的链并粘贴到原来的链后面,变成一个2n长度的序列,在它上面dp,效率O(8n^3) 显然是过不 ...

随机推荐

  1. MsDepSvc 启动失败

    MsDepSvc 使用80端口,用于 Microsoft Web Deploy 3.6 的远程代理服务. 如果80端口被占用,则启动失败.我的是被phpstudy软件占用,所以启动失败.

  2. 报错:无法将类型"System.Data.EntityState"隐式转换为"System.Data.Entity.EntityState"

    报错:无法将类型"System.Data.EntityState"隐式转换为"System.Data.Entity.EntityState".   出错语句停留 ...

  3. java常见包

    常见的软件包: java.lang : language java的核心包,Object System  String Throwable jdk1.2版本后,该包中的类自动被导入. java.awt ...

  4. Js 日期加减天数

    <SCRIPT language="javascript"> function addDate(dd,dadd){ var a = new Date(dd) a = a ...

  5. VS2010 打包生成exe文件后 执行安装文件出现 TODO:&lt;文件说明&gt;已停止工作并已关闭

    一.VS2010 打包生成exe文件后  执行安装文件出现  TODO:<文件说明>已停止工作并已关闭 TODO: <文件说明>已停止工作 原因: 打包的时候在文件系统中建立了 ...

  6. iOS Sprite Kit最新特性Physics Field虚拟物理场Swift測试

    在WWDC2014上,Sprite Kit又有了非常多新的提升! 当中一个非常有意思的东西就是Physics Field!也就是物理场! 这意味着我们在Sprite kit上编写虚拟物理场的游戏将变得 ...

  7. Sequential projection learning for hashing阅读笔记

    真不能再挖坑了,前面挖聊很多坑都没来得及填,从今往后,能写多少就是多少.Sequential projection learning for hashing这篇文章去年就阅读了,当时阅读完没来得及做笔 ...

  8. Linux学习杂记

    近期一口气看完了韩顺平老师讲的Linux视频教程,自己也在学习的过程中做了些笔记,记载例如以下.希望帮助到一些喜欢研究Linux的同学.也算是在云端备份一下笔记吧.以免电脑出现不可控的因素而遗失自己的 ...

  9. Objective-C:动态绑定

    // Complex.h // 03-动态绑定 // // Created by ma c on 15/8/11. // Copyright (c) 2015年. All rights reserve ...

  10. Linux系统教程 标准输入/输出和重定向

    1. 标准输入与输出 我们知道,执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘:标准输出文件(stdout)和标准错误输出文件(stderr), ...