UVa 1629 - Cake slicing(记忆化搜索)
来源:互联网 发布:mac电脑免费翻墙 编辑:程序博客网 时间:2024/06/07 21:19
对每块蛋糕进行统计,若有1颗就直接返回1,2颗或以上就继续切,没有则不可行。然后继续切的话枚举每一个可以切的方法,记忆化搜索。
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int inf=0x3f3f3f3f;const int maxn=25;int n,m;int d[maxn][maxn][maxn][maxn];bool g[maxn][maxn];int getnum(int u,int d,int l,int r){ bool flag=false; for(int i=u;i<=d;++i) for(int j=l;j<=r;++j) if(g[i][j]){ if(flag) return 2; else flag=true; } return flag;}int dp(int u,int dd,int l,int r){ int& k=d[u][dd][l][r]; if(k!=-1) return k; int num=getnum(u,dd,l,r); if(num==1) return 0; if(!num) return inf; k=inf; for(int i=l;i<r;++i) k=min(k,dp(u,dd,l,i)+dp(u,dd,i+1,r)+dd-u+1); for(int i=u;i<dd;++i) k=min(k,dp(u,i,l,r)+dp(i+1,dd,l,r)+r-l+1); return k;}int main(){ int k,t=0; while(~scanf("%d%d%d",&n,&m,&k)){ memset(g,0,sizeof(g)); memset(d,-1,sizeof(d)); while(k--){ int r,c; scanf("%d%d",&r,&c); g[r][c]=true; } printf("Case %d: %d\n",++t,dp(1,n,1,m)); } return 0;}
0 0
- [UVA 1629]Cake slicing[记忆化搜索]
- UVa 1629 - Cake slicing(记忆化搜索)
- UVa 1629 Cake slicing (记忆化搜索)
- UVA 1629 Cake slicing——记忆化搜索
- UVA 1629 Cake slicing (区间dp --记忆话搜索)
- hdu2513:Cake slicing(记忆化搜索)
- 100道动态规划——6 UVA 1629 Cake slicing 记忆化搜索
- UVa 1629 - Cake slicing
- UVA 1629 Cake slicing
- UVA 1629 - Cake slicing 题解
- UVa 1629 Cake Slicing DP
- uva - 1629 Cake slicing(dp)
- uva 1629 cake slicing(dp)
- Uva-1629 Cake slicing(DP)
- uva 1629 Cake Slcing 记忆化搜索+dp
- UVa #1629 Cake slicing (习题9-3)
- [DP枚举]UVa 1629 - Cake slicing
- uva 1629——Cake slicing
- 关于寄存器ESP和EBP
- Spring经典面试题
- zoj2987 Misspelling
- 【BZOJ 1146】【CTSC 2008】网络管理network
- mariaDB 创建存储过程时报错
- UVa 1629 - Cake slicing(记忆化搜索)
- Java栈与堆
- poj3278Catch That Cow(bfs)
- HDU1560 DNA sequence (IDA*)
- 如何从wireshark中获取H264码流(原创)
- 【cogs58】延绵的山峰【st表】
- 取模运算的性质
- 从用户态的open到内核驱动实现流程
- 美团网Java工程师面试题