51nod 1021 石子归并 (动态规划 简单代码)
题目:

思路:动态规划,递推式子 dp[i][j] = min(dp[i][j], dp[i][k] + dp[k+1][j] + sum[j] - sum[i-1]);
dp[i][j]表示合并第i到第j个石子需要的最少代价。sum[i]表示前i个石子的价值,sum[j] - sum[i-1]即合成两堆石子((第i到第k合并出的石子),(第k+1到第j合并出的石子))。
但是考虑要求1-4,
需要先求出(1-1,2-4),(1-2,3-4),(1-3,4-4)。
所以我们不能直接按横纵坐标遍历。
需要换一种遍历方式,在纸上画一画就可以知道有哪些可行的遍历方式了。
我的遍历方式是

从左往右看,对角线全是0,表示合并(i,i)的代价是0。
这种遍历方式能够保证遍历是按照逻辑上的顺序的。
代码:
#include <iostream>
using namespace std;
typedef long long ll;
#define INF 2147483647 //输入
int n;
int a[]; int dp[][];//dp[i][j]表示第i到第j堆石子合成所需的最小代价
int sum[]; //前缀和 int main(){
cin >> n;
for(int i = ;i <= n; i++) cin >> a[i], sum[i] = sum[i-] + a[i];
int ans = ; for(int i = ;i <= n-; i++){
//(x,y)表示图上每一个箭头的起点
int x = i;int y = i+;
//开始往上走(箭头方向)
while(x >= ){
dp[x][y] = ; for(int j = x;j <= y-; j++){
dp[x][y] = min(dp[x][y],dp[x][j] + dp[j+][y] + sum[y] - sum[x-]);
}
x--;
}
}
cout << dp[][n] << endl;
return ;
}
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 石子归并(动态规划)
		
#include <iostream> #include <algorithm> #include <string> #include <iostream&g ...
 - 51nod 1021 石子归并 - 区间dp(经典)
		
题目地址:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1021 经典区间dp,dp[i][j] 表示将从 i 到 j 堆 ...
 - 51Nod 1021 石子归并(区间dp经典入门)
		
题意: N堆石子摆成一条线.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的代价.计算将N堆石子合并成一堆的最小代价. n<=100 思 ...
 - 51nod 1021 石子归并
		
区间dp 递推比递归的常数要小 所以还是尽量学会递推吧 看题解 各种恶心啊 有木有 还是视频讲的直接呃 不过就是讲的有点儿慢 链接:https://www.bilibili.com/vide ...
 - 51nod 1021 石头归并
		
1021 石子归并 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 N堆石子摆成一条线.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合 ...
 - cogs 80. 石子归并 动态规划
		
80. 石子归并 ★★ 输入文件:shizi.in 输出文件:shizi.out 简单对比时间限制:1 s 内存限制:128 MB 设有N堆沙(shi)子排成一排,其编号为1,2,3, ...
 
随机推荐
- Qt-信号和槽-1对1
			
前言:信号和槽是Qt的核心机制,窗体和控件对象之间的沟通一般都使用信号和槽. 对于部件有哪些信号和槽,可以查看help文档. 一.使用自定义槽 1.1 新建工程 新建工程,新建Widget类(基于QW ...
 - android 给imageView,文字等加上阴影[记录]
			
1.链接 https://github.com/Devlight/ShadowLayout 2.效果 3.code compile 'com.github.devlight.shadowlayout: ...
 - python学习——正则表达式
			
正则表达式 正则表达式的主要作用就是对字符串进行匹配,通过匹配,进行筛选,选择出符合规则的字符串.其实正则表达式的作用就像是一个过滤器一样.你输入好自己的 ...
 - [luogu2607 ZJOI2008] 骑士 (树形dp)
			
题目描述 Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬. 最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火绵延五百里, ...
 - 洛谷 P1147 连续自然数和 (滑动窗口)
			
维护一个滑动窗口即可 注意不能有m到m的区间,因为区间长度要大于1 #include<cstdio> #define _for(i, a, b) for(int i = (a); i &l ...
 - oracle间隔分区
			
http://blog.csdn.net/rznice/article/details/55048876
 - WinServer-IIS-MIME类型
			
自定义类型的处理流程 1.浏览器问服务器,这是什么类型的文件 2.服务器告诉浏览器这是什么类型的文件(如果不告诉,那么浏览器就会下载相应文件) 3.浏览器告诉windows注册表这是什么类型的文件 4 ...
 - dubbo知识点理解
			
1.分布式服务架构关键在于:用于提高业务复用及整合的 分布式服务框架(RPC) 是关键.注册中心是关键,提供业务复用和整合. 2.dubbo在消费方,获取服务列表后提供软负载均衡.dubbo在消费方提 ...
 - HDU 4308 Contest 1
			
纯BFS+优先队列扩展. #include <iostream> #include <cstdio> #include <cstring> #include < ...
 - 接口測试-HAR
			
參考文章 雪球的 HttpApi 接口測试框架设计 HAR(HTTP Archive)规范 神器--Chrome开发人员工具(一) HAR是什么 一句话:关于HTTP所有的信息的一种文件保存格式 HA ...