首页 > 其他分享 >RMQ模板

RMQ模板

时间:2023-07-27 17:34:31浏览次数:26  
标签:function __ RMQ int vector 模板 op

template<calss T>
struct RMQ {
    int n;
    vector<vector<T>> f;
    vector<int> log_2;
    vector<T> a;
    function <T(T, T)> cmp;
    RMQ() {}
    RMQ(int n, function<T(T, T)> op) : 
        n(n), f(n + 5, vector<T>(__lg(n) + 1)), log_2(n + 5), a(n + 5), cmp(op) {}
    RMQ(int n, const vector <T> &_a, function<T(T, T)> op) :
        n(n), f(n + 5, vector<T>(__lg(n) + 1)), log_2(n + 5), a(_a), cmp(op) { init(); }
    void init() {
        int m = __lg(n);
        for(int j = 0; j <= m; j++) {
            for(int i = 1; i + (1 << j) - 1 <= n; i++) {
                if(!j) f[i][j] = a[i];
                else f[i][j] = cmp(f[i][j - 1], f[i + (1 << j - 1)][j - 1]);
            }
        }
        log_2[0] = -1;
        for(int i = 1; i <= n; i++) log_2[i] = log_2[i >> 1] + 1;
    }
    T query(T l, T r) {
        assert(l <= r);
        int k = log_2[r - l + 1];
        return cmp(f[l][k], f[r - (1 << k) + 1][k]);
    }
};

 

标签:function,__,RMQ,int,vector,模板,op
From: https://www.cnblogs.com/chayi/p/17585572.html

相关文章

  • DINIC算法模板
    //定义一个名为F的网络流:NetWorkFlowF(n,S,T);//复杂度V^2*EstructNetWorkFlow{structFlownode{intvi,id;intwi;};intS,T;constintinf=0x3f3f3f3f;std::vector<int>rk,cur;std::vector<std::vector<Flown......
  • P8436 【模板】边双连通分量 详细讲解
    P8436【模板】边双连通分量概念注意!双连通仅针对无向图而言。割边(桥):删去这条边使图不连通的边。边双连通图:不存在割边的图(等价定义:图中任意两个点都至少两条不同路径可以到达的图)。性质:一个点不可能同时属于2个边双连通图,因为如果两个双连通分量相交与一点,那么删去任......
  • 页面测试模板
    一级标题二级标题三级标题四级标题我是正文。woshizhengwen.代码块Javapackagecom.standard.controller;importjava.util.LinkedList;importjava.util.Queue;publicclassTest{publicstaticvoidmain(String[]args){QueueiQueue=newLi......
  • OI 模板合集
    此处存放本蒟蒻写过的各种cpp模板,不喜勿喷~#目录-基本算法-前缀和-差分-二分答案-基本数据结构-栈-队列-搜索-图上深度优先遍历-图上广度优先遍历#基本算法##前缀和```cppfor(inti=1;i<=n;i++){cin>>arr[i];......
  • 最短路模板总结
    最短路单源最短路所有边权都是正数朴素版Dijkstra算法(适用于稠密图)堆优化版Dijkstra算法(适用于稀疏图)存在负权边Bellman_Ford算法,用于仅存在负权边,并且对边数有限制Spfa算法对Bellman_Ford算法进行优化(容易被卡死)多源汇最短路可能不止一个起点,有很多询问,求任意......
  • C++中的模板
    1.概念模板是对类型的抽象,为了更好的实现多态的思想。模板分为类模板和函数模板。2.函数模板就是在函数之前声明一下模板,然后执行的时候,函数自行判断推导类型。intadd(inta,intb){returna+b;}doubleadd(doublea,doubleb){returna+b;}//如a......
  • vue指令及模板语法
    说实话,看了这两节之后,改变认知的,突然发现自己落后了这么多,真不应该v- 这个指令集的确666,把许多东西的实现简化了,真心学到了不少,菜鸟这方面讲的真是不错https://www.runoob.com/vue3/vue3-directives.html我在这就不献丑了,而且里面的各种试例的可运行代码环境我非常喜欢,可以......
  • uva 12299 RMQ with Shifts(线段树单点更新初步应用)
                                 uva12299RMQwithShiftsInthetraditionalRMQ(RangeMinimumQuery)problem,wehaveastaticarrayA.Thenforeachquery(L,R)(LR),wereporttheminimumvalueamongA[L],A[L+1],...,A[R].N......
  • 仿奈雪の茶小程序,奶茶小程序模板源码(附全套源码下载链接)
    分享一个仿奈雪の茶小程序,奶茶小程序模板源码(兼容H5版本全网首发)完美复刻奈雪の茶小程序,可稍加修改使用。代码结构如下本项目包含:首页点餐(自取和外卖两种方式,有基本的点餐逻辑处理)取餐我的积分商城积分商城详情页积分签到会员码我的卡券收货地址我的资料我的订......
  • uni-app vue-cli命令行创建项目,拉取模板(dcloudio/uni-preset-vue)失败,443超时报错
    安装vue/clinpminstall-g@vue/cli问题根据官网提示,通过vue-cli命令行创建项目,出现如下报错。Fetchingremotepresetdcloudio/uni-preset-vue...ERRORFailedfetchingremotepresetdcloudio/uni-preset-vue:ERRORRequestError:connectETIMEDOUT192.30.25......