BoxInBox

[ABC309F] Box in Box

考虑到肯定要使长、宽、高按照大小对应是最佳情况,所以先将每个箱子的 \(3\) 个属性升序排列。

然后再按照长排序,这样能够产生 Yes 者一定在每个箱子的后面。我们可以倒着枚举,先离散化,然后将每个箱子按照以宽为位置、高为值插入到线段树/树状数组中,然后就可以询问对于每个箱子在满足宽的限制的情况下的最大值,与当前箱子的高比较即可。

注意处理 \(h\) 相同的箱子。

如果使用树状数组,可以将离散化后的结果反过来,从查询后缀改为前缀,就可直接使用树状数组查询前缀,不会有 \(\max\) 差分的错误。

复杂度 \(O(n\log n)\)

AC

posted @ 2023-07-21 16:03  wscqwq  阅读(27)  评论(0编辑  收藏  举报