51nod 1021 石头归并
第1行:N(2 <= N <= 100)
第2 - N + 1:N堆石子的数量(1 <= A[i] <= 10000)
输出最小合并代价
4
1
2
3
4
19
这道题初一看很容易往贪心方向想,后来看了提示才知道是dp,可是并不知道怎么dp。。
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
using namespace std;
const int INF = << ;
int sum[];
int vis[];
int dp[][];
int main(){
int n;
while(~scanf("%d",&n)){
int i,len,temp;
memset(vis,,sizeof(vis));
memset(sum,,sizeof(sum));
memset(dp,,sizeof(dp));
for(i=;i<=n;i++){
scanf("%d",&vis[i]);
sum[i]=sum[i-]+vis[i];
}
for(len=;len<n;len++){
for(i=;i+len<=n;i++){
dp[i][i + len] = INF;
temp=sum[i+len]-sum[i-];
for(int k=i;k<i+len;k++)
dp[i][i+len]=min(dp[i][i+len],dp[i][k]+dp[k+][i+len]+temp);
}
}
printf("%d\n",dp[][n]);
}
}
51nod 1021 石头归并的更多相关文章
- 51nod 1021 石子归并(dp)
51nod 1021 石子归并 题解:从i到j合并的最小值:dp[i][j] = min(dp[i][j], dp[i][k] + dp[k+1][j] + sum[j] - sum[i-1]); 最 ...
- 51nod 1021 石子归并 区间DP
1021 石子归并 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 取消关注 N堆石子摆成一条线.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆 ...
- 51nod 1021 石子归并 【区间DP】
1021 石子归并 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 N堆石子摆成一条线.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子 ...
- 51nod 1021 石子归并 - 区间dp(经典)
题目地址:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1021 经典区间dp,dp[i][j] 表示将从 i 到 j 堆 ...
- 51nod 1021 石子归并
区间dp 递推比递归的常数要小 所以还是尽量学会递推吧 看题解 各种恶心啊 有木有 还是视频讲的直接呃 不过就是讲的有点儿慢 链接:https://www.bilibili.com/vide ...
- 51Nod 1021 石子归并(动态规划)
#include <iostream> #include <algorithm> #include <string> #include <iostream&g ...
- 51nod 1021 石子归并 (动态规划 简单代码)
题目: 思路:动态规划,递推式子 dp[i][j] = min(dp[i][j], dp[i][k] + dp[k+1][j] + sum[j] - sum[i-1]); dp[i][j]表示 ...
- 51Nod 1021 石子归并(区间dp经典入门)
题意: N堆石子摆成一条线.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价.计算将N堆石子合并成一堆的最小代价. n<=100 思 ...
- AC日记——石子归并 51nod 1021
石子归并 思路: 经典动态规划——归并类问题: 我们把状态划为n个,即1-n的n个长度为n个状态: 那么,每个长度为i的状态都可以由i-1个长度为i-1的状态推出: 所以,dp转移方程: dp[i][ ...
随机推荐
- sharepreferce支持boolean,string类型
public class SharePrefersUtils { private static final String name="cogi"; public static bo ...
- Jqeury获取table当前行与指定列
今天遇到了一个Jqeury获取table当前行与指定列的问题: 大概的实现要求是一个页面中,上面有几个input输入框,下面有一个table,当在输入框中输入内容的时候,点击添加按钮的时候,在下面ta ...
- VS2010关于WindowsService 制作安装程序包,无法自动install的问题解决方法
当添加了 安装项目后,需要做2个步骤的操作,第一是 右键点击 “视图”---“文件系统”,添加“项目输出“,好了后,再右键点击 “视图”---“自定义操作” 在安装中添加自定义操作,将刚才的”项目输出 ...
- Oracle 11g R2 for Win7旗舰版(64位)的安装步骤
1.下载Oracle 11g R2 for Windows的版本 下载地址:http://www.oracle.com/technetwork/database/enterprise-edition/ ...
- hdu 3585 二分+最大团
题目:给出平面上n个点,现在找m个点,并且使得这m个点最近的两个最远. 分析:显然这满足二分的性质,二分答案,根据点距离需要大于等于二分值重新构造新图,则问题变成了:在新图中找出满足所有点对之间的距离 ...
- Person
using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace PersonD ...
- 深入浅出ExtJS 第五章 树形结构
5.1 TreePanel的基本使用 //树是一种非常典型的数据结构; 5.1.1 创建一棵树 //树控件有Ext.tree.TreePanel类定义,控件的名称为TreePanel;TreePane ...
- 使用T4为数据库自动生成实体类
T4 (Text Template Transformation Toolkit) 是一个基于模板的代码生成器.使用T4你可以通过写一些ASP.NET-like模板,来生成C#, T-SQL, XML ...
- asp.net获取select值的方法
如何使用asp.net获取select值?搜索中发现一个不错的例子,在此与大家分享. 代码: <select runat="server" class="xgxxb ...
- Android之开源项目工具库篇
本文转自:http://www.trinea.cn/android/android-open-source-projects-dev-lib/ 本文中你可以找到那些精美App中各种有特性的View,如 ...