zoukankan      html  css  js  c++  java
  • 线段树--hdoj1754

    include

    include <stdio.h>

    include <stdlib.h>

    include <math.h>

    using namespace std;
    const int MaxNode=524288;
    const int MaxStu=200001;
    struct Node{
    int value;
    int left,right;
    }node[MaxNode];

    int father[MaxStu];
    void BuildTree( int i,int left,int right)
    {
    node[i].left=left;
    node[i].right=right;
    node[i].value=0;
    if(right==left)
    {
    father[left]=i;
    return;
    }

    BuildTree(i<<1,left,(int)floor((left+right)/2.0));
    BuildTree((i<<1)+1,(int)floor((left+right)/2.0)+1,right);
    

    }

    void UpdateTree(int ri)
    {
    if(ri==1) return;
    int fi=ri/2;
    int a=node[fi<<1].value;
    int b=node[(fi<<1)+1].value;
    node[fi].value=(a>b)?a:b;
    UpdateTree(ri/2);

    }

    int MAX;
    void Query(int i,int l,int r)
    {
    if(node[i].leftl && node[i].rightr)
    {
    MAX=(MAX<node[i].value)?node[i].value:MAX;
    return;
    }

    i=i<<1;
    if(l<=node[i].right)
    {
        if(r<=node[i].right)
            Query(i,l,r);
        else
            Query(i,l,node[i].right);
    }
    
    i=i+1;
    if(r>=node[i].left)
    {
        if(l>=node[i].left)
            Query(i,l,r);
        else
            Query(i,node[i].left,r);
    
    }
    

    }
    int main()
    {
    int N,M,igrade;
    while(scanf("%d%d",&N,&M)!=EOF){
    BuildTree(1,1,N);
    for(int i=1;i<=N;i++)
    {
    scanf("%d",&igrade);
    node[father[i]].value=igrade;
    UpdateTree(father[i]);

        }
    
    
    while(M--)
    {
        char ch[3];
        int a,b;
        scanf("%s %d %d",ch,&a,&b);
        if(ch[0] == 'Q')
        {
    
            MAX=0;
            Query(1,a,b);
            printf("%d
    ",MAX);
        }
        else  if(ch[0]=='U')
        {
            node[father[a]].value=b;
            UpdateTree(father[a]);
        }
    }
    
    }
    return 0;
    

    }

  • 相关阅读:
    RestTemplate的异常:Not enough variables available to expand
    WebApplicationContext类的作用
    select动态绑定vue.js
    spring的 @Scheduled的cron表达式
    Spring使用webjar
    ThreadLocal基本原理及运用
    mybatis choose标签的使用
    @RequestBody和@RequestParam区别
    js遍历 for-of
    MySql 模糊查询
  • 原文地址:https://www.cnblogs.com/vector11248/p/5424319.html
Copyright © 2011-2022 走看看