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

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

翻译:有一个n行m列(1<=n,m<=20)的网络蛋糕上有k个樱桃。每次可以用一刀沿着网络线把蛋糕切成两块,并且只能够直切不能拐弯。要求最后每一块蛋糕上恰好有一个樱桃,且切割线总长度最小。

输入输出格式 输入格式:每次输入有若干组数据。每组数据第一行有三个正整数n m k(行,列,樱桃个数),之后的k行每行两个正整数(樱桃的坐标) 输出格式:输出有若干行,对应每组数据。每行输出两个正整数(id,最小的切割长度)

输入输出样例 输入样例: 3 4 3 1 2 2 3 3 2 输出样例: Case 1: 5

 

 

dp[x][y][x1][y1]表示以x,y为上界,x1,y1为下界的最优解

转移的话直接枚举切割点

 

#include
#define inf 0x3f3f3f3fusing namespace std;const int maxn = 25;int n,m,k,sum[maxn][maxn],mp[maxn][maxn],f[maxn][maxn][maxn][maxn];int kase = 0;int getsum(int x,int y,int x1,int y1) { return sum[x1][y1]-sum[x1][y-1]-sum[x-1][y1]+sum[x-1][y-1];}int dp(int x,int y,int x1,int y1) { int s=getsum(x,y,x1,y1);//得到范围内的樱桃个数,用前缀和实现 if(s==0) return inf;//不合法 if(s==1) return 0;//不用再切 int& ans = f[x][y][x1][y1]; if(ans!=inf) return ans; for(int i=x;i
View Code

 

转载于:https://www.cnblogs.com/plysc/p/10885043.html

你可能感兴趣的文章
Java 变参函数的实现
查看>>
nrf51 SDK自带例程的解读
查看>>
SESSION技术
查看>>
数据结构(五)之直接插入排序
查看>>
SQL函数——LENGTH()和LENGTHB()
查看>>
vim - manual -个人笔记
查看>>
详解Javascript中prototype属性(推荐)
查看>>
angularjs实现首页轮播图
查看>>
Git 对象 和checkout 和stash的笔记
查看>>
团队项目总结2-服务器通信模型和顺序图
查看>>
hdu 1085 Holding Bin-Laden Captive!
查看>>
[周记]8.7~8.16
查看>>
递归定义
查看>>
kindeditor 代码高亮设置
查看>>
图的邻接表存储
查看>>
2018 leetcode
查看>>
PHP中获取当前页面的完整URL
查看>>
Chapter 4 Syntax Analysis
查看>>
vi/vim使用
查看>>
讨论Spring整合Mybatis时一级缓存失效得问题
查看>>