HDOJ 3516 Tree Construction 四边形优化dp
2024-09-07 20:00:58
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=3516
题意:
大概就是给你个下凸包的左侧,然后让你用平行于坐标轴的线段构造一棵树,并且这棵树的总曼哈顿距离最短
题解:
很容易得到转移方程:
$$dp[i][j]=min \{ dp[i][k-1]+dp[k][j] + dis(uni(i,k-1),uni(k,j))\}$$
其中$dp[i][j]$表示从$i$到$j$的最优解,$dis(i,j)$表示$i$和$j$之间的曼哈顿距离,$uni(i,j)$表示将$i$和$j$用平行于坐标轴的线段连在一起时的拐角点。
然后可以证明这是满足四边形优化条件的。
然后四边形优化一下就好。
代码:
#include<iostream>
#include<cstring>
#include<queue>
#include<vector>
#include<algorithm>
#include<climits>
#include<cmath>
#define MAX_N 1234
#define INF LLONG_MAX/1234
using namespace std; typedef long long LL; LL dp[MAX_N][MAX_N]; int n; struct point {
public:
LL x, y; point(LL xx, LL yy) : x(xx), y(yy) { } point() { }
}; point P[MAX_N]; LL dis(point a,point b){
return abs(a.x-b.x)+abs(a.y-b.y);
} point uni(point a,point b) {
return point(min(a.x, b.x), min(a.y, b.y));
} int s[MAX_N][MAX_N]; int main() {
cin.sync_with_stdio(false);
while (cin >> n) {
for (int i = ; i <= n; i++)
cin >> P[i].x >> P[i].y;
for (int i = ; i <= n; i++)
for (int j = ; j <= n; j++) {
if (i == j)
dp[i][j] = ;
else
dp[i][j] = INF;
}
for (int i = ; i < n; i++)
dp[i][i + ] = dis(P[i], P[i + ]), s[i][i + ] = i + ;
for (int t = ; t <= n; t++)
for (int i = ; i + t <= n; i++) {
int j = i + t;
int pos = ;
for (int k = s[i][j - ]; k <= s[i + ][j]; k++)
if (dp[i][j] > dp[i][k - ] + dp[k][j]+ dis(uni(P[i], P[k - ]), uni(P[k], P[j])))
dp[i][j] = dp[i][k - ] + dp[k][j] + dis(uni(P[i], P[k - ]), uni(P[k], P[j])), pos = k;
s[i][j] = pos;
}
cout << dp[][n] << endl;
}
return ;
}
最新文章
- user agent stylesheet (浏览器默认样式)!
- [多图]Windows 10 Build 10565今推送:优化界面菜单 Cortana改进
- mysql sql语句执行时间查询
- C++Builder生成的EXE如何在别的电脑上正常运行
- c# UDP
- Hadoop JobHistory
- CSS控制 table 的 cellpadding,cellspacing
- Node.js学习之TCP/IP数据通讯
- jQuery Mobile事件,开发全解+完美注释
- Sass之混合宏、继承、占位符
- Spring 4.x (二)
- div悬浮窗口设计来完成注册页面
- Spring Boot:定时任务
- 解决org.hibernate.exception.SQLGrammarException:could not insert
- 关于PHP批量图片格式转换的问题--本文转成webp, 其他过程格式一样
- jsr223 md5
- ch01 PHP开篇
- linux 使用笔记3
- 11th 回顾5个问题
- [转]java利用AES实现URL的参数加密
热门文章
- .gitignore&#160;中文文件夹无效
- UIAutomator2、Appium、Robotium搭建环境与框架对比
- json序列化datetime类型数据
- CPU指令集不同导致的core分析
- PEAR DB 初学笔记
- CentOS 6.3安装配置LAMP服务器(Linux+Apache+MySQL+PHP5)
- 逆向映射是干嘛的anon_vma, vma, anon_vma_chain
- HTTP3.0(QUIC的实现机制)
- lambda表达式10个示例——学习笔记
- MPSVPX 配置