zoukankan      html  css  js  c++  java
  • 关于莫队本质的理解

    莫队在二维平面上进行。
    对于区间的莫队,考虑现在在([l,r]),可以快速把l++,l--,r++,r--
    ((l,r))投射到平面上,则我们可以把这个点往四个方向移动一格。
    事实上,由于询问互相不影响,我们回答询问的顺序是任意的。
    回答询问顺序的最小代价是曼哈顿距离哈密顿链,好像是npc的。
    考虑近似算法。
    分块,每次处理(l)在区间([a,b])的答案。
    把右端点其所在块排序,然后按照这个顺序移动。
    处理(l)(r)在某个确定块的代价不超过(O(sqrt{n}))
    (r)移动到下一个块时可能很慢,但是均摊时间复杂度是(O(n))的。
    于是总时间复杂度(O(nsqrt{n}))
    如果有三个限制((a,b,c)),则事实上是三维空间的最小曼哈顿距离哈密顿链。
    考虑分块,把每维分成(n^{frac{1}{3}})个块。
    把所有块按照(a,b)所在的块,(c)作为第一,第二,第三关键字排序。
    多个限制同理,如果限制时(a_1...a_n),把(a_1,a_2...a_{n-1})所在的块,(a_n)作为第一,第二...第(n)关键字排序。

  • 相关阅读:
    常用的npm指令总结
    Mongoose基础
    2016总结与展望
    sleep与wait的区别
    查询平均分大于80分的学生
    求最大不重复子串
    快速排序
    按位与(&)运算的作用
    异或运算的作用
    java 字符串中的每个单词的倒序输出
  • 原文地址:https://www.cnblogs.com/ctmlpfs/p/14751268.html
Copyright © 2011-2022 走看看