zoukankan      html  css  js  c++  java
  • 结点更新+区间统计——[Usaco2007 Jan]Balanced Lineup

    题目种涉及到区间的查询,想到线段树
    View Code
    #include<stdio.h>

    int tmin=10000009,tmax=0;
    struct data
    {
    int l,r;
    int min,max;
    }node[
    9950009];


    int fmax(int a,int b)
    {
    return a>b?a:b;
    }
    int fmin(int a,int b)
    {
    return a<b?a:b;
    }

    void build(int ll,int rr,int n)
    {
    node[n].l
    =ll;
    node[n].r
    =rr;
    node[n].max
    =-1;
    node[n].min
    =1000009;
    if (ll==rr) return ;
    int mid=(ll+rr)/2;
    build(ll,mid,
    2*n);
    build(mid
    +1,rr,2*n+1);
    }
    void updata(int ll,int rr,int a,int n)
    {
    if (node[n].l==ll&&node[n].r==rr)
    {
    if(a>node[n].max)
    node[n].max
    =a;
    if(a<node[n].min)
    node[n].min
    =a;
    return ;
    }

    int mid=(node[n].l+node[n].r)/2;
    if (rr<=mid) updata(ll,rr,a,2*n);
    else if (ll>=mid+1) updata(ll,rr,a,2*n+1);
    else
    {
    updata(ll,mid,a,
    2*n);
    updata(mid
    +1,rr,a,2*n+1);
    }
    if(node[2*n].max>node[n].max)node[n].max=node[2*n].max;
    if(node[2*n+1].max>node[n].max)node[n].max=node[2*n+1].max;
    if(node[2*n].min<node[n].min)node[n].min=node[2*n].min;
    if(node[2*n+1].min<node[n].min)node[n].min=node[2*n+1].min;
    }

    void search(int ll,int rr,int n)
    {
    if(node[n].l==ll&&node[n].r==rr)
    {
    if(tmin>node[n].min)tmin=node[n].min;
    if(tmax<node[n].max)tmax=node[n].max;
    return ;
    }
    else
    {
    int mid=(node[n].l+node[n].r)/2;
    if (rr<=mid) search(ll,rr,2*n);
    else if (ll>mid) search(ll,rr,2*n+1);
    else
    {
    search(ll,mid,
    2*n);
    search(mid
    +1,rr,2*n+1);
    }
    }

    }

    int main()
    {
    int L,Q,n;
    while(scanf("%d%d",&L,&Q)!=EOF)
    {
    build(
    1,L,1);

    int i;
    for(i=1;i<=L;i++)
    {
    int temp;
    scanf(
    "%d",&temp);
    updata(i,i,temp,
    1);
    }

    while(Q--)
    {
    int ll,rr;
    scanf(
    "%d%d",&ll,&rr);
    tmin
    =10000009,tmax=0;
    search(ll,rr,
    1);
    printf(
    "%d\n",tmax-tmin);
    }
    }
    return 0;
    }

      

  • 相关阅读:
    SSM:Spring整合SpringMVC框架
    SSM:搭建整合环境
    SpringMVC:常用注解
    SpringMVC的入门案例
    base64
    windows设置exe开机自启动
    Python-wmi模块
    Base64String转为图片并保存
    java给图片添加水印图片
    uni-app中封装axios请求
  • 原文地址:https://www.cnblogs.com/huhuuu/p/2114591.html
Copyright © 2011-2022 走看看