【2015-2】day11 一道点分治的问题

本文探讨了如何运用点分治算法解决超市选址问题,通过预处理每个点最近超市的距离,利用分治策略优化复杂度,实现了高效计算。详细介绍了算法实现过程,包括函数设计、子树合并、贡献计算等关键步骤,同时指出了一种复杂度调整的方法。



注:如果距离相同则去编号最小的


比较难想的点分治

预处理每个点最近超市dis[i]

与一般的点分治不同,由于要合并子树,函数大概要这样写(多半是蒟蒻见识少)

cal(int u)

   for each v (v is a son of u)

      cal(v)

   merge each v

考虑分治的根为rt时的情况

对于每一个儿子v所在子树讨论

对于x不属于v子树

x去v子树某一个点u仅当dis[x] < d[x] + d[u]

移项dis[x] - d[x] < d[u]

对v子树的d[u]排序,那么每个点都可以二分了,就这样计算贡献

遭了貌似复杂度不对= =忘了QAQ



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值