类型:三维动态规划

题目链接

题意:

合并连续石头块,最终要合并成一块,求时间最短,每次只能连续合并L~R块石头,不能合并成一块时输出-1

题解:

  • 利用动态规划解决两种分问题
  • dp[l][r][k]:表示在区间l到r之间分成k堆石头的最小代价
  • 当k=1时,转移方程为:dp[l][r][1]=min(dp[l][r][1],dp[l][i][x-1]+dp[i+1][r][1]+sum[l][r]);
  • 当k>=2时,转移方程为:dp[l][r][k]=min(dp[l][r][k],dp[l][i][k-1]+dp[i+1][r][1]);
  • 先dp当k=1的情况,然后还要从其l和r之间的间隔先枚举。

#include<bits/stdc++.h>
using namespace std;
int sum[105][105];
int a[105];
const int inf = 0x3f3f3f3f;
int dp[105][105][105];
int main()
{
int n,L,R;
while(scanf("%d%d%d",&n,&L,&R)!=EOF)
{
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
memset(dp,inf,sizeof(dp));
for(int i=1;i<=n;i++)
{
sum[i][i-1]=0;
for(int j=i;j<=n;j++)
{
sum[i][j]=sum[i][j-1]+a[j];
dp[i][j][j-i+1]=0;
}
}
int l,r;
for(int d=0;d<=n;d++)//枚举间距
{
for(l=0;l+d<=n;l++)//枚举l
{
r=l+d;
for(int i=l;i<r;i++)//枚举中间位置
{
for(int x=L;x<=R;x++)//一堆的dp
{
dp[l][r][1]=min(dp[l][r][1],dp[l][i][x-1]+dp[i+1][r][1]+sum[l][r]);
}
for(int k=2;k<=r-l+1;k++)//多堆的dp
dp[l][r][k]=min(dp[l][r][k],dp[l][i][k-1]+dp[i+1][r][1]);
}
}
}
if(dp[1][n][1]==inf) printf("0\n");
else printf("%d\n",dp[1][n][1]);
}
return 0;
}

2017北京赛区J题的更多相关文章

  1. 2017北京赛区H题

    题目链接 题意:在n*m的矩阵中选择变换或者不变换一个数变成p,使得最大子矩阵和最小 1<=n,m<=150, -1000<=p<=1000; 题解: 他人题解链接 涉及到知识 ...

  2. [hdu5136]Yue Fei's Battle 2014 亚洲区域赛广州赛区J题(dp)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud 现场赛的时候由于有个地方有点小问题,没有成功AC,导致与金牌失之交臂. 由于今天下 ...

  3. 2017北京国庆刷题Day7 morning

    期望得分:100+0+100=200 实际得分:100+20+0=120 离散化搞搞 #include<cstdio> #include<iostream> #include& ...

  4. 2017北京国庆刷题Day5 afternoon

    期望得分:100+60+100=260 实际得分:0+60+40=100 设图中有m个环,每个环有si条边,有k条边不在环中 ans= (2^s1 -2)*( 2^s2 -2)* (2^s3 -2)… ...

  5. 2017北京国庆刷题Day3 morning

    期望得分:100+60+0=160 实际得分:100+30+0=130 考场上用的哈希 #include<cstdio> #include<cstring> #include& ...

  6. 2017北京国庆刷题Day2 afternoon

    期望得分:100+100+50=250 实际得分:100+70+50=220 T1 最大值(max) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有一 ...

  7. 2017北京国庆刷题Day2 morning

    期望得分:100+100+40=240 实际得分:100+40+0=140 T1 一道图论神题(god) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK ...

  8. HDU-4451-Dressing (2012年金华赛区J题)

    Dressing Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  9. 2017北京国庆刷题Day4 morning

    期望得分:0+40+30=70 实际得分:0+10+10=20 题目修改:只能由0变1,只能用一次操作 大模拟 #include<cstdio> #include<cstring&g ...

随机推荐

  1. CentOS下yum安装FFmpeg

    一.yum安装FFmpeg 1.    最偷懒的方式就是yum安装了,自动解决依赖.不过CentOS系统默认无FFmpeg源,企业版 Linux 附加软件包EPEL源也不包含,需要手动添加yum源配置 ...

  2. web.py url传参及获取

    第一种:直接获取: import web urls = ( '/(.*)','index' #URL后面必须加(.*) ) class index: def GET(self,name): print ...

  3. CSS Ul(列表样式)

    CSS Ul(列表样式) CSS列表属性作用如下: 设置不同的列表项标记为有序列表 设置不同的列表项标记为无序列表 设置列表项标记为图像 一.列表 在HTML中,有两种类型的列表: 无序列表 - 列表 ...

  4. JavaScript中字符操作之大小写转换

    1.toUpperCase()   方法用于把字符串转换为大写 var str = prompt("请输入需转换大写的字符串:"); str = str.toUpperCase() ...

  5. iOS开发进阶 - 基于PhotoKit的图片选择器

    移动端访问不佳,请访问我的个人博客 很早之前就用OC把代码写完了并用在项目中了,一直没时间整理,现在用swift重写一份,并且更加详细的来了解这个Photos框架,下面是我集合苹果官方文档和其他大神的 ...

  6. 一键安装 zabbix 2.0 版本 脚本

    原文地址: http://blog.csdn.net/u012449196/article/details/53859068 本文修改了原文中的部分错误,此脚本适用于zabbix 2.0 版本,以版本 ...

  7. [PyTorch]PyTorch中模型的参数初始化的几种方法(转)

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本文目录 1. xavier初始化 2. kaiming初始化 3. 实际使用中看到的初始化 3.1 ResNeXt,de ...

  8. 跟着vamei复习概率论

    最近重新看了一下概率论,感觉很多东西都遗忘了,还会陷入各种误区,赶紧的纠正回来. 概率论这块,主要内容包括: 事件.条件概率.随机变量.随机变量的分布函数.概率密度.联合分布.期望.方差.协方差. 我 ...

  9. java 集合操作小结

    Map<String,String> m1=new HashMap<String,String>(); m1.put("zara", "name1 ...

  10. python列表解析进阶

    如果要获得一个(元素为整数的)列表里面的偶数,很容易想到列表解析: [i for i in nums if i%2==0] 但是如果要使列表的长度不变,让奇数用0来填充,可能你会直接写: [i for ...