hdoj 1754 I Hate It 【线段树】

题意:不解释

难点:对于初学线段树的同学来说,还不是太懂线段树,不懂得怎么变换,其实这道题只需要小小的改动一下就可以了,就是将原来的敌兵布阵http://blog.csdn.net/shengweisong/article/details/38276519   的代码改动一下就好了

AC by SWS

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

代码:

#include<algorithm>
using namespace std;
#include<stdio.h>
#include<string.h>
#define LC l, m, rt<<1
#define RC m+1, r, rt<<1|1
#define maxN 200000+10
int sum[maxN<<2];

void creat(int l, int r, int rt)
{
    if(l == r){
        scanf("%d", &sum[rt]);
        return;
    }
    int m = (l+r)>>1;
    creat(LC);
    creat(RC);
    sum[rt] = max(sum[rt<<1], sum[rt<<1|1]);
}
void update(int p, int num, int l, int r, int rt)
{
    if(l == r){
        sum[rt] = num;
        return ;
    }
    int m = (l+r)>>1;
    if(p<=m) update(p, num, LC);
    else update(p, num, RC);
    sum[rt] = max(sum[rt<<1], sum[rt<<1|1]);
}
int que(int le, int ri, int l, int r, int rt)
{
    if(le <= l&&r<= ri){
        return sum[rt];
    }
    int res = 0;
    int m = (r+l)>>1;
    if(le <= m) res = max(res, que(le, ri, LC)); //这处改一下
    if(ri > m) res = max(res, que(le, ri, RC)); //这处
    return res;
}
int main(){
    int n, m, a, b, i, j;
    while(scanf("%d%d", &n, &m) !=     EOF){
        memset(sum, 0, sizeof(sum));
        creat(1, n, 1);
        char c[10];
        while(m --){
            scanf("%s %d%d", c, &a, &b);
            if(c[0] == 'Q')
            printf("%d\n", que(a, b, 1, n, 1));
            else
            update(a, b, 1, n, 1);
        }
    }
    return 0;
}

hdoj 1754 I Hate It 【线段树】

时间: 2024-10-12 06:12:36

hdoj 1754 I Hate It 【线段树】的相关文章

HDOJ 1754 I Hate It 线段树 第二题

I Hate It Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少.这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问.当然,老师有时候需要更新某位同学的成绩. Input 本题目包含多组测试,请处理到文件结束.在每个测试的第一行,有两个正整数 N 和 M ( 0<N<=200000,0<M<5000 ),分别代表学生的数目和操作的数目.学生ID编号分别从1

hdu 1754 I Hate It 线段树 点修改

// hdu 1754 I Hate It 线段树 点修改 // // 不多说,裸的点修改 // // 继续练 #include <algorithm> #include <bitset> #include <cassert> #include <cctype> #include <cfloat> #include <climits> #include <cmath> #include <complex> #i

HDOJ 4893 Wow! Such Sequence! 线段树

http://acm.hdu.edu.cn/showproblem.php?pid=4893 题意:10万的区间,初始都为0,10万次操作,三种操作为单点修改,区间将每个数改成最近的斐波那契数,以及区间求和. 分析:用一个flag记录该段是否被改成斐波那契数,同时多维护一个sum1表示如果该段改成斐波那契数,区间和为多少.开始sum1为区间长度,之后在单点做了修改以后对其更新,需要的时候用其覆盖sum. 1 #include<cstdio> 2 #include<cstring>

hdu 1754 I Hate It 线段树单点更新和区间求和

转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754 参照HH大牛写的额! Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问.当然,老师有时候需要更新某位同学的成绩. Input 本题目包含多

【HDU】1754 I hate it ——线段树 单点更新 区间最值

I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 37448    Accepted Submission(s): 14816 Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少.这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要

hdu 1754 I Hate It 线段树 点改动

// hdu 1754 I Hate It 线段树 点改动 // // 不多说,裸的点改动 // // 继续练 #include <algorithm> #include <bitset> #include <cassert> #include <cctype> #include <cfloat> #include <climits> #include <cmath> #include <complex> #i

HDU 1754 I Hate It(线段树)

Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问.当然,老师有时候需要更新某位同学的成绩. Input 本题目包含多组测试,请处理到文件结束. 在每个测试的第一行,有两个正整数 N 和 M ( 0<N<=200000,0<M<5000 ),分别代表学生的数目和操作的数目. 学生ID编号分别从1编到N. 第二

HDU 1754 I Hate It(线段树之单点更新,区间最值)

I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 70863    Accepted Submission(s): 27424 Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感.不管你喜不喜欢,现在需要你做的是,就是按照老师的

HDU - 1754 I Hate It (线段树区间求最值)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754 题意:线段树的单点更新和区间求最值 模板题,,,???,, 1 #include <cstdio> 2 #include <iostream> 3 using namespace std; 4 5 typedef long long LL; 6 const int N=200010; 7 8 LL ans; 9 LL max(LL a,LL b){ 10 if(a>b) r

HDU 1754 I Hate It 线段树RMQ

I Hate It Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1754 Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少.这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问.当然,老师有时候需要更新某位同学的成绩. Input 本题目包含多组测试,请处理到文件