【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的有序表。用乘法代替除法来提速以及避免斜率不存在的情况。
相关文章推荐
- nyoj845 无主之地1
- C#中静态函数的作用
- UVa 10594 Data Flow (最小费用最大流+有问题)
- 数据结构实验之链表三:链表的逆置
- HDU - 1815 Building roads (2-SAT)
- hdu 5360 Hiking (优先队列+贪心)
- IE下angularJS页面跳转的bug
- WPF -Enum的三种绑定方法
- 关于iOS7 上下黑条解决办法
- HDOJ2222Keywords Search【AC自动机模板题】
- HDU-1713 相遇周期
- hdu 1875 畅通工程再续【prim&kruskal】
- UVA - 10596 - Morning Walk(并查集判断连通图)
- JAR包引用其它JAR包的classpath问题
- hdu1863畅通工程【最小生成树】
- LUA XMLHttpRequest 中有个bug
- thinkpad 安装vm 遇到的问题
- SQL Server安装完成后3个需要立即修改的配置选项
- Linux电源管理(10)_autosleep
- 死磕Visual Studio 2010 unsuccessfulbuild因为AlwaysCreate顽疾