注:如果距离相同则去编号最小的
比较难想的点分治
预处理每个点最近超市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
本文探讨了如何运用点分治算法解决超市选址问题,通过预处理每个点最近超市的距离,利用分治策略优化复杂度,实现了高效计算。详细介绍了算法实现过程,包括函数设计、子树合并、贡献计算等关键步骤,同时指出了一种复杂度调整的方法。

3675

被折叠的 条评论
为什么被折叠?



