题意:给定一些点(xi,yi)(xj,yj)满足:i<j,xi<xj,yi>yj。用下面的连起来,使得所有边的长度最小?

题解:直接给出吧

f[i][j]=min(f[i][k]+f[k+1][j]+cost(i,j)

cost(i,j)=a[k].y-a[j].y+a[k+1].x-a[i].x;

明显了吧

证明一下,搞一搞,四边形性质就出来了,模板题吧。

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#define N 1007
#define M 500007
#define inf 2000000009
using namespace std; int n;
int f[N][N],s[N][N];
struct Node{int x,y;}a[M]; int cost(int i,int j,int k)
{
if (k>=j) return inf;
return a[k].y-a[j].y+a[k+].x-a[i].x;
}
int main()
{
while (~scanf("%d",&n))
{
for (int i=;i<=n;i++)
scanf("%d%d",&a[i].x,&a[i].y);
for (int i=;i<=n;i++)
s[i][i]=i;
memset(f,,sizeof f);
for (int L=;L<=n;L++)
for (int i=;i+L-<=n;i++)
{
int j=L+i-;f[i][j]=inf;
for (int k=s[i][j-];k<=s[i+][j];k++)
{
int tmp=f[i][k]+f[k+][j]+cost(i,j,k);
if (tmp<f[i][j]) f[i][j]=tmp,s[i][j]=k;
}
}
printf("%d\n",f[][n]);
}
}

最新文章

  1. webpack配置别名alias出现的错误匹配
  2. SQL服务器在执行这条语句时会先进行运算然后执行
  3. SQL Server 2008 R2——使用FOR XML PATH实现多条信息按指定格式在一行显示
  4. Architectural Model - SNMP Tutorial
  5. js拖动层原形版
  6. ireport开发报表,Java和JSP端如何集成
  7. Mysql 数据库文件存储在哪个目录
  8. 破解之寻找OEP[手动脱壳](2)
  9. java集合简介
  10. C陷阱与缺陷代码分析之第1章词法陷阱
  11. Appium Android Bootstrap源码分析之简介
  12. 在windows搭建react-native android 开发环境总结
  13. Potato(邪恶土豆)–windows全版本猥琐提权
  14. Undefined symbols for architecture arm64: &quot;_OBJC_CLASS_$_WKWebView&quot;, referenced from: objc-c
  15. ACCA AI来袭会议笔记
  16. js-将文本复制到剪切板
  17. C# 合并只要有交集的所有集合
  18. Spring MVC 源码分析
  19. Redis淘汰删除策略
  20. JAVA开发常用计算机命令

热门文章

  1. 合理设置apache的连接数及进程工作方式
  2. AJPFX关于java的依赖 关联 聚合的关系解释
  3. ios 从相册视频中获取视频截图
  4. Android模板制作
  5. [译] 用win7自带工具找出svchost.exe的CPU使用率达到100%的元凶
  6. 洛谷 P2912 [USACO08OCT]牧场散步Pasture Walking
  7. EOS Dawn 3.0 智能合约 -- 新格式
  8. 富通天下(T 面试)
  9. win10x64下的redis安装与使用
  10. Linux常用命令大全3