Loading

洛谷-P8211

Tag:根号分治,分块,并查集

如果用暴力思想,肯定是直接模拟该过程,不妨具体分析情况:

  • \(d\) 很大时,最多会进行 \(\frac{V}{d}\) 次搬砖就会全部搬完或变成第二种情况,复杂度 \(O(\frac{V}{d})\)
  • \(d\) 较小时,每次搬砖 \(d\) 会减 \(\ge 0\)。发现这种暴力无法快速处理有 \(b=0\) 的情况,但是这启发我们采用 阈值分治

记阈值为 \(B\)\(d>B\) 时可直接暴力枚举,快速查询区间和,单点加,为平衡复杂度不妨采用分块,复杂度 \(O(\frac{V^2}{B}+TB)\)
\(d\le B\) 时,此时需要实现快速查找第一个 \(b>0\) 的位置。不妨使用并查集!借用白雪皑皑的处理方法,可以在 \(O(VB)\) 时间内快速预处理出并查集序列,查询可以近似为 \(O(1)\)
这里题目中要求每次进行整体减 \(d\) 操作时必须有一个 \(\le 0\),所以在修改时如果与下一个距离超过 \(d\) 直接停止即可。

posted @ 2025-02-04 15:54  mmilesask  阅读(27)  评论(0)    收藏  举报