51nod 1022 石子归并 环形+四边形优化
第1行:N(2 <= N <= 1000)
第2 - N + 1:N堆石子的数量(1 <= A[i] <= 10000)
输出最小合并代价
4
1
2
3
4
19
将环形的石子归并想象成是2*n的直线石子归并,然后对归并进行四边形不等式优化。
这里的四边形优化就在于s[i][j-1]<=s[i][j]<=s[i+1][j]。
代码:
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
#define LL int
#define inf 1<<30
#define min(a,b) ((a)<(b)?(a):(b))
LL dp[2002][2002];
LL s[2002][2002];
LL p[2002];
LL w[2002][2002];
int main()
{
int n;
while(~scanf("%d",&n))
{ for(int i=1;i<=n;++i)
{
scanf("%d",&p[i]);
p[i+n]=p[i];
}
memset(s,0,sizeof(s));
memset(w,0,sizeof(w));
for(int i=1;i<2*n;++i)
{
for(int j=i;j<=i+n;++j)
{
w[i][j]=w[i][j-1]+p[j];
}
s[i][i]=i;
dp[i][i]=0;
} for(int len=2;len<=n;++len)
{
for(int i=1;i<=2*n-len+1;++i)
{
int j=i+len-1;
dp[i][j]=inf;
for(int k=s[i][j-1];k<=s[i+1][j];++k)
{
LL tmp=dp[i][k]+dp[k+1][j]+w[i][j];
if(tmp<dp[i][j])
{
dp[i][j]=tmp;
s[i][j]=k;
}
}
}
} LL ans=inf;
for(int i=1;i<=n;++i)
{
ans=min(ans,dp[i][i+n-1]);
}
printf("%d\n",ans);
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
51nod 1022 石子归并 环形+四边形优化的更多相关文章
- 51nod 1022 石子归并 V2 —— DP四边形不等式优化
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1022 1022 石子归并 V2 基准时间限制:1 秒 空间限 ...
- 51Nod 1022 石子归并 V2(区间DP+四边形优化)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1022 题目大意: N堆石子摆成一个环.现要将石子有次序地合并成 ...
- [51nod 1022] 石子归并v2 [dp+四边形不等式优化]
题面: 传送门 思路: 加强版的石子归并,现在朴素的区间dp无法解决问题了 首先我们破环成链,复制一条一样的链并粘贴到原来的链后面,变成一个2n长度的序列,在它上面dp,效率O(8n^3) 显然是过不 ...
- 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]); 最 ...
- HRBUST - 1819 石子合并问题--圆形版(区间dp+环形+四边形优化)
石子合并问题--圆形版 在圆形操场上摆放着一行共n堆的石子.现要将石子有序地合并成一堆.规定每次只能选相邻的两堆合并成新的一堆,并将新的一堆石子数记为该次合并的得分.请编辑计算出将n堆石子合并成一堆的 ...
- 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[i][j] = min(dp[i][j], dp[i][k] + dp[k+1][j] + sum[j] - sum[i-1]); dp[i][j]表示 ...
随机推荐
- lunix下的redis安装
https://blog.csdn.net/qq_35992900/article/details/82950157
- 图解IDEA中配置Maven并创建Maven的Web工程
打开IDEA,File->Settings,如下图所示: 2.在Settings中按照如下进行配置,如下图所示:
- Mysql数据库日志,备份及回滚操作
一.打开二进制日志配置 : 在Windows系统下,对mysql的my.ini的log-bin等进行配置目录位置时,假设要将log-bin的日志配置到D盘的mysqllog的文件为binlog.则可以 ...
- ZC706+FMCOMMS5应用笔记
1.板载时钟配置. ZC706有200MHz LVDS差分时钟源SiT9102,作为ZYNQ系统参考时钟. COMMS5板子上有ADCLK846时钟Buffer分路器作为AD9361的时钟源,AD84 ...
- Jquery元素筛选、html()和text()和val三者区别
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 吴裕雄--天生自然JAVA面向对象高级编程学习笔记:接口的基本实现
interface A{ // 定义接口A public static final String AUTHOR = "李兴华" ; // 全局常量 public abstract ...
- windows制作动态链接库和使用一
制作: //myDll.h _declspec(dllexport) int add(int a,int b); _declspec(dllexport) int sub(int a,int b); ...
- vSphere 高级特性FT配置与管理
内容预览: 1. Fault Tolerance 的工作方式 2. 5.X版本FT使用的vLockstep技术 3. 6.X版本FT使用的Fast Checkpointing技术 4. FT不支持的v ...
- mongodb- 备份和导入备份
一.使用 mongodump 命令备份数据 mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表 -o 文件存放路径 参数说明: -h 指明数据库宿主机 ...
- 利用 Ruoyi 开发自己的业务管理系统__测试结构完成
前言铺垫不多说 (1)Ruoyi这个平台不错:如果你觉得你比Ruoyi的作者牛逼,你就不用看我这个文章了,你可以走了,因为我自认为比Ruoyi的作者要烂: (2)必须已经成功搭建Ruoyi,并能在自己 ...