回滚莫队?滚滚滚滚起来!
来源:互联网 发布:淘宝账号如何绑定手机 编辑:程序博客网 时间:2024/06/10 00:28
回滚莫队
这名字真的取的有意思,一开始还不觉得,学了之后发现他真的在回滚.我们回滚莫队排序是按之前的莫队一样将询问 左块右位置 的来排序.
回滚问题特别之处在哪里?
他在滚.
特别之处1
我们对于左右端点都在同一块里的,直接暴力for 1遍统计答案,复杂度根号n.
特别之处2
我们是枚举每一块来统计答案的.此时我们只处理左端点在此块,右端点在右块的询问,左右同块的见1.我们把ql指针指向下一块的开头,qr指针指向这一块的末尾.对于此本块询问,我们先将qr指针向右移更新信息直到此询问的右端点.(当我们处理下一个询问的时候,qr只需要继续右移就可以了,因为询问左端点都同块的时候,我们是按右端点位置从小到大排序的,所以单调递增).
这里好像没有回滚,并且由于qr单调递增,区间扩大,并没有删除操作.
但是我还没讲ql.
本块包含询问的左端点一定在ql左边(见ql定义).我们就将ql向左移更新答案(此时区间仍然在扩大,只有更新操作没有删除操作),到了询问的左端点,统计答案.
然后就开始滚了,并且是回滚.ql向左到达询问左端点后,向右往初始位置(见ql定义)移,删除之前一路滚过来所更新的信息.然后ql回滚回来,qr仍不动,处理下个询问.
所以就是 qr向右移动更新信息到询问右端点->ql向左滚 边滚边更新 至询问左端点,然后处理此区间答案,ql回滚删除之前一路滚来更新的信息,回到初位置->处理(下个询问->本块询问处理完->枚举下个块.
回滚得十分形象.
一道练手题:点这里(可以用分快做但最好用回滚莫队练练手,看了我的代码你就懂了).
阅读全文
0 0
- 回滚莫队?滚滚滚滚起来!
- 滚滚滚滚滚滚滚滚
- 滚滚滚滚滚滚滚滚股份
- 滚滚滚滚滚滚滚滚滚
- 滚滚滚滚滚滚滚滚滚滚滚滚滚滚滚滚滚滚滚滚滚滚滚个鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅
- 滚滚红尘
- 红尘滚滚
- 读解《滚滚红尘》
- 2007,财源滚滚
- 热浪滚滚来加班
- 读书笔记:《财源滚滚》
- 【开心小丫头】滚滚长江
- 系统小菊花滚滚
- 冬雷滚滚阿
- 【 随笔 】 财源滚滚
- 手机端滚滚屏
- 2007,财源滚滚---之感受
- 红尘滚滚,谁为知音
- find the most comfortable road HDU
- 文件版通讯录的c语言实现
- POJ 1014 Dividing(多重背包转换成01背包)
- 读写文件的操作
- C++实现创建winform
- 回滚莫队?滚滚滚滚起来!
- #define 宏的用法备注
- java快速排序的递归版
- uikit——UIView——convert between view coordinate system
- C语言基础学习
- 人工智能及虚拟现实的约束
- 拓扑排序 hdu 2094
- Qt的鼠标事件
- servlet、filter、listener、interceptor的区别