线段树模板

来源:互联网 发布:电信会屏蔽哪些端口 编辑:程序博客网 时间:2024/06/07 22:59
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
#define maxn 199999
using namespace std;
int num[maxn];
int segtree[maxn];


void plant(int node ,int l,int r)
{
    if(l==r){segtree[node]=num[r];}


    int mid=(l+r)/2;
    plant(node*2,l,mid);
    plant(node*2+1,mid+1,r);


    segtree[node]=max(segtree[node*2],segtree[node*2+1]);


}
int query(int node,int st,int end,int l,int r)
{
    if(end<r&&st>l)return -1;
    if(end>=l&&st<=r)return segtree[node];


    int mid=(st+end)/2;
    int p=query(node*2,st,mid,l,r);
    int q=query(node*2+1,mid+1,end,l,r);


    return max(p,q);


}


void update(int node,int st,int end,int ind,int up)
{
    if(st==end){segtree[node]=up;return;}
    int mid=(st+end)/2;


    if(mid>ind)
    {
        update(node*2+1,mid+1,end,ind,up);
    }
    else
    {
        update(node*2,st,mid,ind,up);


    }
    segtree[node]=max(segtree[node*2],segtree[node*2+1]);

}

int main

{

return 0;

{

原创粉丝点击