• 莫队算法


    1. 笔记
    莫队算法的思想是在离线查询时通过调整查询的顺序,优化总复杂度。当利用前一次查询的结果处理后一次结果的复杂度与两次查询的曼哈顿距离相关时,可以使用莫队算法。例如,一维查询将所有查询由小到大排序,从小到大处理查询。二维查询从方便角度考虑(不用曼哈顿最小树),可以将其中一维(如x维)分块,查询的排序遵循先按分块排,再按另一维(y)排顺序。
    考虑二维查询。设查询的两维规模分别是n,m,共q次查询,将n分为k份。则复杂度是(O(qk+frac{mn}{k})+O(frac{n}{k}(m+k))),将n分为(sqrt{n})块时,复杂度大致是(O(nsqrt{n}))
    2. 代码

    int block_size=316;
    struct Query
    {
        int a,b,id,block;
        Query(){}
        Query(int x,int y,int z):a(x),b(y),id(z){block=a/block_size;}
        bool operator < (const Query q)const{return block<q.block||(block==q.block&&b<q.b);}
    }q[maxn];
    
  • 相关阅读:
    Django_05_模板
    Django_04_视图
    Django_03_后台管理
    Django_02_创建模型
    Django_01_创建图书管理项目
    Djang简介
    day_03比特币转账的运行原理
    day_02比特币的转账机制及其7个名词
    day01_人类社会货币的演变
    Socket问题
  • 原文地址:https://www.cnblogs.com/maoruimas/p/9631721.html
Copyright © 2020-2023  润新知