码迷,mamicode.com
首页 > 其他好文 > 详细

I Hate it-HDU1754

时间:2020-01-21 20:20:37      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:比较   要求   线段树   main   names   mil   pac   str   eof   

题意:

很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。这让很多学生很反感。不管你喜不喜欢,

现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。

链接: http://acm.hdu.edu.cn/showproblem.php?pid=1754

思路:

基本的线段树点修改+查询区间最大值

代码:

#include <bits/stdc++.h>
using namespace std;
const int MAXN=2e5+5;
int tree[MAXN<<2];int a[MAXN];
void push_up(int node)
{
    tree[node]=max(tree[node<<1],tree[node<<1|1]);
}
void build(int node,int l,int r)
{
    if(l==r)
    {
        tree[node]=a[l];return;
    }
    int mid=(l+r)>>1;
    build(node<<1,l,mid);
    build(node<<1|1,mid+1,r);
    push_up(node);
}
void update(int node,int l,int r,int i,int k)
{
    int mid=(l+r)>>1;
    if(l==r)
    {
        a[l]=k;tree[node]=k;
        return;
    }
    if(i<=mid)
        update(node<<1,l,mid,i,k);
    else
        update(node<<1|1,mid+1,r,i,k);
    push_up(node);
}
int query(int node,int l,int r,int x,int y)
{
    if(x<=l&&y>=r)
    {
        return tree[node];
    }
    int res=0;
    int mid=(l+r)>>1;
    if(x<=mid)
        res=max(res,query(node<<1,l,mid,x,y));
    if(y>mid)
        res=max(res,query(node<<1|1,mid+1,r,x,y));
    return res;
}
int main()
{
    int n,m;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        for(int i=1;i<=n;i++)
            scanf("%d",&a[i]);
        build(1,1,n);
        for(int i=1;i<=m;i++)
        {
            char str[3];
            scanf("%s",str);
            int x,y;
            if(str[0]==Q)
            {
                scanf("%d%d",&x,&y);
                printf("%d\n",query(1,1,n,x,y));
            }
            else
            {
                scanf("%d%d",&x,&y);
                update(1,1,n,x,y);
            }
        }
    }
    return 0;
}

I Hate it-HDU1754

标签:比较   要求   线段树   main   names   mil   pac   str   eof   

原文地址:https://www.cnblogs.com/ljxdtc666/p/12222796.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!