POJ 2951 Cake Cutting
来源:互联网 发布:stm8l15x中文数据手册 编辑:程序博客网 时间:2024/06/05 07:01
题意:给定一个w*h的蛋糕,将其分成m份,也就是切m-1刀(必须保证每次都将一块蛋糕切成两份,按照水平或者竖直),求最后m份中最大的那份的面积最小是多少。
题解:记忆化搜索,dp[k][i][j]为将一块i*j的蛋糕切k刀的最大面积的最小值,枚举下一刀的横竖以及切的位置和其中一份的刀数。
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int inf=0x3f3f3f3f;int dp[405][25][25];int dfs(int m,int w,int h){ if(dp[m][w][h]!=inf) return dp[m][w][h]; else if(m==0) return dp[m][w][h]=w*h; else { int ans=inf; for(int i=1,lim=w/2+1;i<=lim;i++) for(int k=0;k<=m-1;k++) ans=min(ans,max(dfs(k,i,h),dfs(m-1-k,w-i,h))); for(int i=1,lim=h/2+1;i<=lim;i++) for(int k=0;k<=m-1;k++) ans=min(ans,max(dfs(k,w,i),dfs(m-1-k,w,h-i))); return dp[m][w][h]=ans; }}int main(){ int w,h,m; memset(dp,0x3f,sizeof(dp)); while(scanf("%d%d%d",&w,&h,&m),w||h||m) printf("%d\n",dfs(m-1,w,h)); return 0;}
- POJ 2951 Cake Cutting
- POJ 2951 Cake Cutting(动态规划)
- poj 2843 Cutting Cake
- Cake Cutting Algorithms-1
- Cake Cutting Algorithms – 2
- Sicily 2376. Cutting The Cake
- Cake Cutting Algorithm -4 : Trimming Algorithm
- CSUOJ 1284 Cutting Cake(递推)
- poj 2378 Tree Cutting
- POJ 2378 Tree Cutting
- POJ 2378 Tree Cutting
- poj 2378 Tree Cutting
- POJ 2311 Cutting Game
- POJ 2378 Tree Cutting
- POJ 1791 Paper Cutting
- POJ-2311-Cutting Game
- poj 2378 Tree Cutting
- POJ 2311 Cutting Game
- Head First 设计模式 (三) 装饰者模式(decorator pattern) C++实现
- SQL学习资料总结
- ios rate app 资料收集
- JAVA计算文件的crc32校验码
- 深入研究Servlet线程安全性问题
- POJ 2951 Cake Cutting
- ctime pitfall
- Conflicting CPU frequency values detected
- MySQL 视图
- 浏览器及其版本判断js
- jquery选择器的基本学习
- 黑马程序员_JAVA基础之环境变量
- JAVA面试
- Android项目不自动生成Android Dependencies