HDU 1754 I Hate It(区间最值问题&线段树)

来源:互联网 发布:arm linux gcc 4.5.1 编辑:程序博客网 时间:2024/06/05 23:56

题目链接:[kuangbin带你飞]专题七 线段树 B - I Hate It

Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

题意

Description

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

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

Input

本题目包含多组测试,请处理到文件结束。
在每个测试的第一行,有两个正整数 N 和 M ( 0

Output

对于每一次询问操作,在一行里面输出最高成绩。

思路

裸的模版题,线段树求解区间最值。

代码

#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>#include <cstdlib>#include <vector>using namespace std;const int N = 200009;const int MAX = N*3;int Sum[MAX];void build(int l, int r, int k){    if(l == r)    {        scanf("%d", &Sum[k]);        return;    }    int mid = (l+r)>>1;    build(l, mid, k<<1);    build(mid+1, r, k<<1 | 1);    Sum[k] = max(Sum[k<<1], Sum[k<<1 | 1]);}void update(int l, int r, int pos, int d, int k){    if(l == r)    {        Sum[k] = d;        return;    }    int mid = (l+r)>>1;    if(pos<=mid)        update(l, mid, pos, d, k<<1);    else        update(mid+1, r, pos, d, k<<1 | 1);    Sum[k] = max(Sum[k<<1], Sum[k<<1 | 1]);}int find(int l, int r, int tol, int tor, int k){    if(tol <= l && tor >= r)        return Sum[k];    int mid = (l+r)>>1;    int ans = 0;    if(tol <= mid)        ans = max(ans, find(l, mid, tol, tor, k<<1));    if(tor > mid)        ans = max(ans, find(mid+1, r, tol, tor, k<<1 | 1));    return ans;}int main(){    ios_base::sync_with_stdio(false);    int n, m;    while(~scanf("%d%d", &n, &m))    {        build(1, n, 1);        char str[10];        int i, j;        while(m--)        {            scanf("%s%d%d", str, &i, &j);            if(str[0] == 'U')                update(1, n, i, j, 1);            else                printf("%d\n" ,find(1, n, i, j, 1));        }    }    return 0;}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 快手绑定的手机号丢了登不上怎么办 快手绑定的手机号丢了登不了怎么办 苹果id有手机号不知道密码怎么办 微信号不是手机号不知道密码怎么办 手机发短信说程序发生错误怎么办 派派游戏崇物等级低怎么办 轻微事故没有报警后面有问题怎么办 苹果6sp手机接电话声音小怎么办 用手机号办的移动宽带到期了怎么办 联通忘了宽带的用户名和密码怎么办 宽带联通移机附近没有端口怎么办 电信卡怎么改服务密码忘记了怎么办 路由器重置宽带账号密码忘了怎么办 重置路由器后不知道宽带密码怎么办 欠费后重新缴费宽带连接不了怎么办 华硕路由器忘记账号密码忘了怎么办 光纤猫光信号闪红灯不能上网怎么办 被传销洗了脑的人怎么办 辞职了评职称年度考核表怎么办 我是饭店饭店欠供货商的钱多怎么办 mac电脑ps卡住了点不了怎么办 高考自愿民族栏要改为民族怎么办 法院拆消裁定后再审有错怎么办 重定向语句前面有文件路劲怎么办 您上传的图片大小超过3M怎么办 两个人打架被拍视频上传了怎么办 小米手机打开后一直出现英文怎么办 百度云分享文件含有违规内容怎么办 百度网盘下载说本地空间不足怎么办 绘声绘影X9将滤镜拖到视频怎么办 苹果手机中间的按钮没用了怎么办? 图片怎么发的在百度里面应该怎么办 学java刚看的视频就忘了怎么办 qq上传照片一直显示排队中怎么办 微信支付不小心重复付款怎么办 学习通上传视频时 文件过大怎么办 电脑死机了怎么办 也不能关机了 还没发货淘宝退款卖家不处理怎么办 还没发货申请退款卖家不处理怎么办 快递写错电话被更改收货信息怎么办 货在派送中快递地址填错了怎么办