火力大喵
https://xinyoudui.com/ac/contest/74500D1E5000A6307D5204/problem/43650
牢匡的题目必须严肃改完好吧。
首先注意到除了 min, max, 其他数都没有区别,那么值域缩成 \(3\) 对吧,利用一点容斥技巧,我们现在要求恰好包括 min, max 的边界数,那么容斥成至少,将 min, max 和其他数代表的数值进行 0/1 转化,那么现在的问题就变成了如何求全为 \(1\) 的边界数量。
这是本题最关键的一步,也可以看成是一个 trick。
首先分治,每次我们对长边分治,假设 \(n < m\),那么就是从中间劈开一刀。
考虑枚举这条线上的两个点,代表所有从这两个点扩展向外面的矩形数量,你注意到这一块复杂度是短边平方的和显然小于面积,若递归 \(\log\) 轮则每层复杂度不超过总面积,因此是可以接受的。,此时通过预处理将向外扩展的长度排序可以干掉一维限制,你发现另一个限制是,要求必须能构成一个矩形,也就是你的垂边必须要有一定长度才能接起来,这一部分可以考虑写个树状数组啥的求一下,我是不懂为什么可以前缀和的,不过这样也够了,显然 \(\log\) 层复杂度都是总面积乘上一个 \(\log\),那么总体就是 \(O(nm\log^2nm)\) 的。

浙公网安备 33010602011771号