首页 > 编程语言 > 详细

【数据结构】莫队算法

时间:2021-01-03 19:09:54      阅读:24      评论:0      收藏:0      [点我收藏+]
namespace MoAlgorithm {

    int n, m, BLOCK;

    struct Node {
        int l, r, id;
        bool operator<(const Node &node) const {
            if (l / BLOCK != node.l / BLOCK)
                return l < node.l;
            if ((l / BLOCK) & 1)
                return r < node.r;
            return r > node.r;
        }
    } node[200005];

    int L, R, cur, ans[200005];

    void add(int pos) {

    }

    void del(int pos) {

    }

    void Solve() {
        BLOCK = ceil(pow(n, 0.5));
        sort(node + 1, node + 1 + m);
        L = 1, R = 1, cur = 0;
        for(int i = 1; i <= m; ++i) {
            while(L > node[i].l)
                add(--L);
            while(R < node[i].r)
                add(++R);
            while(L < node[i].l)
                del(L++);
            while (R > node[i].r)
                del(R--);
            ans[node[i].id] = cur;
        }
        for(int i = 1; i <= m; ++i)
            printf("%d%c", ans[i], " \n"[i == m]);
    }

};

【数据结构】莫队算法

原文:https://www.cnblogs.com/purinliang/p/14226185.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!