UVA - 1629

ans[t][b][l][r]表示t到b行,l到r列那一块蛋糕切好的最小值
d[t][b][l][r]表示t到b行,l到r列区域的樱桃数,需要预处理

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int d[][][][];
int ans[][][][];
int n,m,k,cse;
int init(int t,int b,int l,int r)
{
if(d[t][b][l][r]!=-) return d[t][b][l][r];
int m1;
if(b-t>r-l)
{
m1=(t+b)>>;
return d[t][b][l][r]=init(t,m1,l,r)+init(m1+,b,l,r);
}
else
{
m1=(l+r)>>;
return d[t][b][l][r]=init(t,b,l,m1)+init(t,b,m1+,r);
}
}
int dp(int t,int b,int l,int r)
{
if(ans[t][b][l][r]!=0x3f3f3f3f) return ans[t][b][l][r];
if(d[t][b][l][r]==) return ans[t][b][l][r]=;
int i;
for(i=t;i<b;i++)
if(d[t][i][l][r]&&d[i+][b][l][r])
ans[t][b][l][r]=min(ans[t][b][l][r],dp(t,i,l,r)+dp(i+,b,l,r)+r-l+);
for(i=l;i<r;i++)
if(d[t][b][l][i]&&d[t][b][i+][r])
ans[t][b][l][r]=min(ans[t][b][l][r],dp(t,b,l,i)+dp(t,b,i+,r)+b-t+);
return ans[t][b][l][r];
}
int main()
{
int i,j,t1,t2,i1,j1;
while(scanf("%d%d%d",&n,&m,&k)==)
{
memset(d,-,sizeof(d));
memset(ans,0x3f,sizeof(ans));
for(i=;i<=n;i++)
for(j=;j<=m;j++)
d[i][i][j][j]=;
for(i=;i<=k;i++)
{
scanf("%d%d",&t1,&t2);
d[t1][t1][t2][t2]=;
}
for(i=;i<=n;i++)
for(j=;j<=m;j++)
for(i1=i;i1<=n;i1++)
for(j1=j;j1<=m;j1++)
init(i,i1,j,j1);
printf("Case %d: %d\n",++cse,dp(,n,,m));
}
return ;
}

Cake slicing UVA - 1629的更多相关文章

  1. uva 1629

    1629 - Cake slicing Time limit: 3.000 seconds A rectangular cake with a grid of m * n <tex2html_v ...

  2. UVa 1629 Cake slicing (记忆化搜索)

    题意:一个矩形蛋糕上有好多个樱桃,现在要做的就是切割最少的距离,切出矩形形状的小蛋糕,让每个蛋糕上都有一个樱桃,问最少切割距离是多少. 析:很容易知道是记忆化搜索,我们用dp[u][d][l][r]来 ...

  3. UVa 1629 DP Cake slicing

    题意: 一块n×m的蛋糕上有若干个樱桃,要求切割若干次以后,每块蛋糕上有且仅有1个樱桃.求最小的切割长度. 分析: d(u, d, l, r)表示切割矩形(u, d, l, r)所需要的最小切割长度. ...

  4. 【Uva 1629】 Cake slicing

    [Link]: [Description] 给你一个n*m的格子; 然后里面零零散散地放着葡萄 让你把它切成若干个小矩形方格 使得每个小矩形方格都恰好包含有一个葡萄. 要求切的长度最短; 问最短的切割 ...

  5. UVA - 1629 Cake slicing(切蛋糕)(dp---记忆化搜索)

    题意:有一个n行m列(1<=n, m<=20)的网格蛋糕上有一些樱桃.每次可以用一刀沿着网格线把蛋糕切成两块,并且只能够直切不能拐弯.要求最后每一块蛋糕上恰好有一个樱桃,且切割线总长度最小 ...

  6. 1629 - Cake slicing(DP)

    花了近2个小时终于AC,好爽.. 一道类似于最优矩阵链乘的题目,受<切木棍>那道题的启示,该题的原理也是一样的,仅仅只是变成了且面积.那么对应的也要添加维度 . 显然要完整的表示状态,最少 ...

  7. Uva 1629 切蛋糕

    题目链接:https://vjudge.net/contest/146179#problem/B 题意:一个矩形蛋糕上有好多个樱桃,现在要做的就是切割最少的距离,切出矩形形状的小蛋糕,让每个蛋糕上都有 ...

  8. Cake slicing

    题意: n*m的方格中有k个点,现在要把方格分开使得每个点在一个部分,每分一次花费边长的费用,求完成花的最小费用 分析: dp[sx][sy][ex][ey]表示分割起点(sx,sy)终点(ex,ey ...

  9. uva1629,Cake Slicing,记忆化搜索

    同上个题一样,代码相似度极高,或者说可以直接用一个模板吧 dp[i,j,p,q]表示一块长为j-i+1,宽为q-p+1,左上角在位置(i,j)上的蛋糕,dp[]表示当前状态下的最优值,然后对该块蛋糕枚 ...

随机推荐

  1. Andriod Atom x86模拟器启动报错。

    用Inter Atom模式的Android模拟器启动报一下错误: Starting emulator for AVD 'new' emulator: ERROR: x86 emulation curr ...

  2. AptitudeSystem 2.0

    AptitudeSystem 2.0(2017-03-07) 描写叙述:Windows内核研究辅助工具 支持的系统:Windows 7.Windows 8.Windows 8.1.Windows 10 ...

  3. NIO原理图

  4. nrm -- NPM registry 管理工具(附带测速功能)

    在使用npm时,官方的源下载npm包会比较慢,国内我们基本使用淘宝的源.nrm 是一个 NPM 源管理器,可以允许你快速地在 NPM 源间切换. Install npm install -g nrm ...

  5. mysql优化----explain的列分析

    sql语句优化: : sql语句的时间花在哪儿? 答: 等待时间 , 执行时间. 等待时间:看是不是被锁住了,那就不是语句层面了是服务端层面了,看连接数内存. 执行时间:到底取出多少行,一次性取出1万 ...

  6. codeforces B. Shower Line 解题报告

    题目链接:http://codeforces.com/contest/431/problem/B 题目意思:给出5 * 5 的矩阵.从这个矩阵中选出合理的安排次序,使得happiness之和最大.当第 ...

  7. 基于HALCON的模板匹配方法总结 (转)

    很早就想总结一下前段时间学习HALCON的心得,但由于其他的事情总是抽不出时间.去年有过一段时间的集中学习,做了许多的练习和实验,并对基于HDevelop的形状匹配算法的参数优化进行了研究,写了一篇& ...

  8. codeforces 673C C. Bear and Colors(暴力)

    题目链接: C. Bear and Colors time limit per test 2 seconds   memory limit per test 256 megabytes input s ...

  9. 百度地图API--信息窗口

    信息窗口 -----纯文本信息窗口 为了更方便的提示用户,在地图的指定的地方添加文本信息的窗口,给用户直观展示信息,下面是如何添加一个纯文本的信息窗口. 下面是添加一个文本窗口: /* * 添加纯文本 ...

  10. xcode 修改类名 变量名

    修改类名 1.将鼠标点击放在类的名称上,右击选择refactor->rename,或选择Xcode工具栏中的edit->refactor->rename: 2.之后,将类名更改为我们 ...