记忆化搜索 区间dp uva629
来源:互联网 发布:码栈完善聚划算编程 编辑:程序博客网 时间:2024/05/17 07:05
记忆化搜索 区间dp uva629
这题一看就知道是区间dp 状态定义很简单 但是在写代码的时候 有个地方一直错 错到我吐血 下面代码中有写
d(x,y,k,h)表示x行到y行 k列到h列的最少数 也就是子矩形的宽度和高度
d(x,y,k,h)=min(d(x,i,k,h)+d(i,y,k,h)+h-k) 列的枚举也是如此
#include <iostream> #include <string.h> using namespace std;const int inf = 0x3f3f3f3f;int n,m,l,d[25][25][25][25];int map[25][25];int getsum(int x,int y,int k,int h){int sum=0;for(int i=x+1;i<=y;i++)for(int j=k+1;j<=h;j++){if(map[i][j])sum++;if(sum>=2)return sum;}return sum;}int dp(int x,int y,int k,int h)//表示的半开半闭 {int &ans=d[x][y][k][h];if(ans!=-1) return ans;int num=getsum(x,y,k,h);if(num==1) return ans=0;//如果只有一个了就不用分了 if(!num) return ans=inf;//如果0个 那么就是不能这样分 放回无穷大 ans=inf; for(int i=x+1;i<y;i++)ans=min(ans,dp(x,i,k,h)+dp(i,y,k,h)+h-k);for(int j=k+1;j<h;j++)ans=min(ans,dp(x,y,k,j)+dp(x,y,j,h)+y-x);return ans;}int main(){int cas=1;while(~scanf("%d%d%d",&n,&m,&l)){memset(d,-1,sizeof(d));memset(map,0,sizeof(map));for(int i=0;i<l;i++){int x,y;scanf("%d%d",&x,&y);map[x][y]=1;}printf("Case %d: %d\n",cas++,dp(0,n,0,m));//这个地方 按照理解是从1开始 但是一直//写不出来 }return 0;}
0 0
- 记忆化搜索 区间dp uva629
- HDU3427 Clickomania【记忆化搜索】【区间DP】
- 记忆化搜索求解区间型dp
- poj1390区间dp+记忆化搜索
- [CDOJ1321]-区间DP(记忆化搜索)
- hdu4283区间dp 记忆化搜索 区间分化
- 区间DP(可以看成记忆化搜索)
- Uva 10891 Game of Sum - 区间DP..记忆化搜索
- uva 10453 - Make Palindrome (区间dp,记忆化搜索)
- UVA1351-----String Compression-----区间DP(记忆化搜索实现)
- 149D - Coloring Brackets(区间DP 记忆化搜索)
- POJ 2955 Brackets(区间DP, 记忆化搜索)
- loj 1031(区间dp+记忆化搜索)
- POJ 3280 Cheapest Palindrome(区间dp,记忆化搜索)
- HDU 4960 Another OCD Patient(区间dp记忆化搜索)
- Ural 1183 Brackets Sequence(区间DP+记忆化搜索)
- HDU5115 Dire Wolf 区间DP 记忆化搜索
- poj1179 区间dp(记忆化搜索写法)有巨坑!
- 应用更新工具类
- dlmalloc 2.8.6 源码详解—[1]chunk
- css样式
- 数据结构--快速排序
- R树空间索引
- 记忆化搜索 区间dp uva629
- Unity+高通Vuforia SDK——AR播放视频
- hdu 1248 寒冰王座(完全背包)
- [C++]C++中的虚函数
- 分布式一致性原理、Paxos算法与Zookeeper的ZAB协议、Zookeeper使用场景与在电商系统中的应用
- MySql_安装
- 对某音乐网站歌曲链接抓取的分析
- JDK中的Poxy类简单实现动态代理
- <<Linux内核完全剖析 --基于0.12内核>>学习笔记 第4章 80x86保护模式及其编程 4.4 分页机制