Processing math: 100%

「CF1396D」Rainbow Rectangles

题意简述

CF1396D

n 个豆子,第 i 个坐标为 (xi+ε,yi+ε),颜色 ciε=0.5)。总的坐标范围 [0,lim],求有多少个格点矩形能够包含所有不同颜色的豆子。n2000

主要思路

离散化,枚举矩形左边界做 O(n) 次。
考虑把右边界从 lim 枚举回左边界。

那么现在左右边界确定。考虑对每一个纵坐标 y 维护 ay,满足对于下边界为 y 时,只要上边界大于 ay 整个矩形就包含所有颜色。
不难发现,任意时刻 ay 单调不降;右边界从右往左枚举的时候,一次只会把 a 的一个后缀对某个数取 max。
线段树,O(n2logn)

参考代码

突然发现我开始染上了新的恶习:

对于几个if短句喜欢直接拿&&连接。

1
2
if(A) if(B) C;
(A) && (B) && (C);

Gitalking ...