[JZOJ3578] Adriatic

本文探讨在一个M×M的网格图中,给定N个不同位置的点,如何计算从每个点出发到其它所有点的最短路径之和。通过将平面划分为四个区域并利用递归思想来寻找最优路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Description

M×M的网格图中,有N个点,每个点位置(xi,yi)各不相同,
两个点之间可以一步到达,当且仅当xi<xj,yi<yj 或者 xi>xj,yi>yj
问每个点作为起点,到每个点距离的和分别是多少。

Constraint

N2.5×105

M2.5×103

Analysis

考虑某一个点作为起点,把平面分成四个部分,右上和左下的点可以一步到达,
现在只考虑左上的点,它有两种方式,一种是在右边找一个最高的点,一种是在
下边找一个最左的点,找出这样的两个点,就会把左上的区域变得更小,那我们
fx,y(x,y)是右下角时,所包含区域的答案,显然有式子
fx,y=cntx,y+fnx,ny,然后右下的点也同理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值