这道题把样例画一画之后,很直观的方法就是把高度映射到一维线段树上,每个叶子节点代表一列,然后一个值表示该列剩余的宽度,然后每个区间统计该区间的最大余量
但问题是,h<=10^9,怎么办?注意到n<=200,000,我们插入n张海报,最多用到n列,也就是说,实际有效高度最多为n,于是,我们取
h=min(h,n),这下h不会超过200,000,就可以以高度建树了,剩下的事情就简单了
代码:
这道题把样例画一画之后,很直观的方法就是把高度映射到一维线段树上,每个叶子节点代表一列,然后一个值表示该列剩余的宽度,然后每个区间统计该区间的最大余量
但问题是,h<=10^9,怎么办?注意到n<=200,000,我们插入n张海报,最多用到n列,也就是说,实际有效高度最多为n,于是,我们取
h=min(h,n),这下h不会超过200,000,就可以以高度建树了,剩下的事情就简单了
代码: