博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA1629 Cake slicing
阅读量:5279 次
发布时间:2019-06-14

本文共 1721 字,大约阅读时间需要 5 分钟。

直接暴力定义f[x1][y1][x2][y2]是使对角为\((x1, y1),(x2, y2)\)这个子矩形满足要求的最短切割线长度

因为转移顺序不好递推,采用记忆化搜索

#include 
#include
#include
#include
#define LL long longusing namespace std;LL read() { LL k = 0, f = 1; char c = getchar(); while(c < '0' || c > '9') { if(c == '-') f = -1; c = getchar(); } while(c >= '0' && c <= '9') k = k * 10 + c - 48, c = getchar(); return k * f;}int f[21][21][21][21], sum[21][21];bool mapp[21][21];int dp(int x1, int y1, int x2, int y2) { int num = sum[x2][y2] - sum[x1-1][y2] - sum[x2][y1-1] + sum[x1-1][y1-1]; if(num == 1) return f[x1][y1][x2][y2] = 0; if(num == 0) return f[x1][y1][x2][y2] = 2147483647 / 3; if(f[x1][y1][x2][y2] != -1) return f[x1][y1][x2][y2]; f[x1][y1][x2][y2] = 2147483647 / 3; for(int i = x1; i < x2; ++i) f[x1][y1][x2][y2] = min(dp(i+1, y1, x2, y2) + dp(x1, y1, i, y2) + abs(y1 - y2) + 1, f[x1][y1][x2][y2]); for(int i = y1; i < y2; ++i) f[x1][y1][x2][y2] = min(dp(x1, y1, x2, i) + dp(x1, i+1, x2, y2) + abs(x1 - x2) + 1, f[x1][y1][x2][y2]); return f[x1][y1][x2][y2];}int n, m, k;void solve(int tot) { memset(f, -1, sizeof(f)); memset(mapp, 0, sizeof(mapp)); for(int i = 1; i <= k; ++i) { int x = read(), y = read(); mapp[x][y] = 1; } for(int i = 1; i <= n; ++i) for(int j = 1; j <= m; ++j) sum[i][j] = sum[i-1][j] + sum[i][j-1] - sum[i-1][j-1] + mapp[i][j]; dp(1, 1, n, m); printf("Case %d: %d\n", tot, f[1][1][n][m]);}int main() { int tot = 0; while(scanf("%d %d %d", &n, &m, &k) != EOF) solve(++tot); return 0;}

转载于:https://www.cnblogs.com/wxl-Ezio/p/11028787.html

你可能感兴趣的文章
Git 远程仓库
查看>>
HttpClient的巨坑
查看>>
关于静态文本框透明度的问题
查看>>
海量数据、高并发的优化方案
查看>>
javascript的发展及个人笔记
查看>>
全选,反全选,反选,获取选中的值,根据子选择控制全选按钮
查看>>
梦断代码读后感01
查看>>
[CF#250 Div.2 D]The Child and Zoo(并查集)
查看>>
博客园博客插入公式
查看>>
spring ioc原理(看完后大家可以自己写一个spring)
查看>>
hdu 1028 Ignatius and the Princess III(母函数入门+模板)
查看>>
Ubuntu下配置安装telnet server
查看>>
Codeforces 235 E Number Challenge
查看>>
ubuntu 常见命令整理
查看>>
关于vue的npm run dev和npm run build
查看>>
Hive架构
查看>>
EJBCA安装教程+postgresql+wildfly10
查看>>
(五十四)涂鸦的实现和截图的保存
查看>>
关于微信暴力加很申请
查看>>
06享元、责任链
查看>>