神奇的救火现场

博客探讨了一维数轴上救护车和水栓的最优匹配问题,以最小化距离和为目标。分析中指出,最优方案具有特定性质,如匹配关系仅能为相离或包含,且匹配物品形成连续段。通过从小到大枚举并利用前缀和计算,可以解决此问题。
摘要由CSDN通过智能技术生成

题目大意

在一维数轴上有p个水栓和f辆救护车。现在要为每个救护车匹配一个水栓,使得距离和最小。一个水栓最多只能被一辆救护车匹配。

f≤p≤100000

分析

救护车匹配水栓可以分成两种方向。
在最优方案中有以下性质:
两种方向的两个匹配只有相离的关系
同向的两个匹配可以通过不影响答案的调整使得两两关系为相离或包含
被匹配的物品必然是连续的一段

然后就可以按它们在数轴上的位置从小到大枚举。分两种情况:
水栓:容易求出它上一个匹配的是哪一个(通过上面的性质得出一个括号序),然后匹配过来,中间的答案就由前缀和计算;当然它也可以不被选,就从上一个物品直接转移过来
救护车:容易求出它上一个匹配的是哪一个(上面情况的括号序取反),然后匹配过来,中间的答案用前缀和计算。

#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

const int N
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值