[BZOJ4152][AMPPZ2014]The Captain题解

给定平面上n个点,从1号点到n号点,通过相邻点建立费用边,寻找最小费用路径。分析表明,通过点的X坐标和Y坐标排序并存储边,可以解决100%的数据,最大n<=200000。代码实现略。
摘要由CSDN通过智能技术生成

The Captain

题目描述

给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点走到n号点的最小费用。

分析

我们第一时间会想把所有点都连上边,这样在跑一遍dijkstra,不就可以了吗?
但是

对于100%的数据,n<=200000

那我们就想一下如何优化呢
我从样例哪里拿来3个数来看一下

id x y
1 2 2
2 1 1
3 4 5

1到2,需要 m i n ( ∣ X 1 − X 2 ∣ , ∣ Y 1 − Y 2 ∣ ) = 1 费 用 min(|X_1-X_2|,|Y_1-Y_2|)=1费用 min(X1X2,Y1Y2)=1
1到3,需要 m i n ( ∣ X 1 − X 3 ∣ , ∣ Y 1 − Y 3 ∣ ) = 2 费 用 min(|X_1-X_3|,|Y_1-Y_3|)=2费用 min(X1X3,Y1Y3)=2
2到3,需要 m i n ( ∣ X 2 − X 3 ∣ , ∣ Y 2 − Y 3 ∣ ) = 3 费 用 min(|X_2-X_3|,|Y_2-Y_3|)=3费用 min(X</

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值