Cake slicing UVA - 1629
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的更多相关文章
- uva 1629
1629 - Cake slicing Time limit: 3.000 seconds A rectangular cake with a grid of m * n <tex2html_v ...
- UVa 1629 Cake slicing (记忆化搜索)
题意:一个矩形蛋糕上有好多个樱桃,现在要做的就是切割最少的距离,切出矩形形状的小蛋糕,让每个蛋糕上都有一个樱桃,问最少切割距离是多少. 析:很容易知道是记忆化搜索,我们用dp[u][d][l][r]来 ...
- UVa 1629 DP Cake slicing
题意: 一块n×m的蛋糕上有若干个樱桃,要求切割若干次以后,每块蛋糕上有且仅有1个樱桃.求最小的切割长度. 分析: d(u, d, l, r)表示切割矩形(u, d, l, r)所需要的最小切割长度. ...
- 【Uva 1629】 Cake slicing
[Link]: [Description] 给你一个n*m的格子; 然后里面零零散散地放着葡萄 让你把它切成若干个小矩形方格 使得每个小矩形方格都恰好包含有一个葡萄. 要求切的长度最短; 问最短的切割 ...
- UVA - 1629 Cake slicing(切蛋糕)(dp---记忆化搜索)
题意:有一个n行m列(1<=n, m<=20)的网格蛋糕上有一些樱桃.每次可以用一刀沿着网格线把蛋糕切成两块,并且只能够直切不能拐弯.要求最后每一块蛋糕上恰好有一个樱桃,且切割线总长度最小 ...
- 1629 - Cake slicing(DP)
花了近2个小时终于AC,好爽.. 一道类似于最优矩阵链乘的题目,受<切木棍>那道题的启示,该题的原理也是一样的,仅仅只是变成了且面积.那么对应的也要添加维度 . 显然要完整的表示状态,最少 ...
- Uva 1629 切蛋糕
题目链接:https://vjudge.net/contest/146179#problem/B 题意:一个矩形蛋糕上有好多个樱桃,现在要做的就是切割最少的距离,切出矩形形状的小蛋糕,让每个蛋糕上都有 ...
- Cake slicing
题意: n*m的方格中有k个点,现在要把方格分开使得每个点在一个部分,每分一次花费边长的费用,求完成花的最小费用 分析: dp[sx][sy][ex][ey]表示分割起点(sx,sy)终点(ex,ey ...
- uva1629,Cake Slicing,记忆化搜索
同上个题一样,代码相似度极高,或者说可以直接用一个模板吧 dp[i,j,p,q]表示一块长为j-i+1,宽为q-p+1,左上角在位置(i,j)上的蛋糕,dp[]表示当前状态下的最优值,然后对该块蛋糕枚 ...
随机推荐
- hdoj 4932 Miaomiao's Geometry 【暴力枚举】
题意:在一条直线上有n个点.取一长度差为x的区间. 规定点必须是区间的端点. 让你找出来最大的x 策略:rt 分析可得:两个相邻点之间的区间要么是两个点的差,要么就是两个点的差的一半,那我们就简单枚举 ...
- golang-----golang sync.WaitGroup解决goroutine同步
go提供了sync包和channel来解决协程同步和通讯.新手对channel通道操作起来更容易产生死锁,如果时缓冲的channel还要考虑channel放入和取出数据的速率问题. 从字面就可以理解, ...
- css3某些特性
在下列情况下,建议使用opacity属性而不是rgba()函数 1.实现多种颜色(元素)的半透明效果.使用opacity属性,不仅背景颜色,就连文本颜色.边框颜色都会变透明. 2.在不知道颜色的情况下 ...
- 织梦系统如何设置URL绝对路径及绝对路径的好处
今天,和大家分享下织梦系统如何设置URL绝对路径及绝对路径的好处,我的一些就是用的织梦系统,感觉织梦在SEO优化方面做的还是非常好的,至少在CMS系统中应该是做的最出色的吧!下面,我就先来讲下这个织梦 ...
- 探讨Ajax中有关readyState(状态值)和status(状态码)的问题
先看下面一段代码,然后给大家详细介绍,Ajax中有关readyState(状态值)和status(状态码)的问题,具体内容如下所示: var getXmlHttpRequest = function ...
- Swift(一)简单值
Swift的源文件扩展名是.swift 按照国际惯例,学习一门新语言写的第一个程序都是在屏幕上输出一句 “Hello, world!” .在Swift里,一行代码就搞定了: 如果你以前写过C或者Obj ...
- 调节音量的各个方法——AudioManager的使用
AudioManager类位于android.Media包中,该类提供访问控制音量和铃声模式的操作. //获取AudioManager实例对象 AudioManager audioManage = ( ...
- Intel® Media SDK Media Samples Linux 学习笔记(转)
最近折腾intel media sdk,主要硬件平台是在HD4600的核显上进行测试,intel media sdk是intel提供的一种基于核显的硬件编解码的解决方案,之前已经有使用ffmpeg进行 ...
- Watir: Win32ole对于excel某些指令无法操作的时候有如下解决方案
Similar Threads 1. WIN32OLE - failed to create WIN32OLE 2. WIN32OLE#[] and WIN32OLE#[]= method in Ru ...
- Hibernate中两种获取Session的方式
转自:https://www.jb51.net/article/130309.htm Session:是应用程序与数据库之间的一个会话,是hibernate运作的中心,持久层操作的基础.对象的生命周期 ...