您的位置:首页 > 其它

【COCI 2012】Tax

2015-08-11 11:36 218 查看

题目大意

维护一个长度为nn的序列,每个元素是一条直线,要求实现:

将xx位置上改成一条新的直线

询问[l,r)[l, r)上的所有直线与x=ax=a这条直线交点中最高一个的纵坐标

其中共QQ个询问,询问的aa递增

n<=105,Q<=3×105n<=10^5,Q<=3\times 10^5

分析

这道题我想到了用线段树套CDQ分治时间复杂度是O(nlog2n)O(nlog^2n)的。

然而这远古时期的题目,空间卡得比较死。

题解给的是一个分块算法,比较好写,空间很小。

对于11操作我们直接暴力重建这个块。

对于操作22直接询问就可以了。

注意的地方

要求单次修改O(m)O(m)地维护一个长度为mm的有序表。

用乘法代替除法来提速以及避免斜率不存在的情况。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: