HDU 1754 Java

退役后学java...

裸线段树

//By SiriusRen
import java.util.*;
import java.math.*;
public class Main{
    public static void build(int l,int r,int pos,int []tree,int []score){
        if(l==r){tree[pos]=score[l];return;}
        int mid=(l+r)>>1,lson=pos<<1,rson=pos<<1|1;
        build(l,mid,lson,tree,score);build(mid+1,r,rson,tree,score);
        tree[pos]=Math.max(tree[lson],tree[rson]);
    }
    public static void insert(int l,int r,int pos, int num,int wei,int []tree){
        if(l==r){tree[pos]=wei;return;}
        int mid=(l+r)>>1,lson=pos<<1,rson=pos<<1|1;
        if(mid<num)insert(mid+1,r,rson,num,wei,tree);
        else if(mid>=num)insert(l,mid,lson,num,wei,tree);
        tree[pos]=Math.max(tree[lson],tree[rson]);
    }
    public static int query(int l,int r,int pos,int L,int R,int []tree){
        if(l>=L&&r<=R)return tree[pos];
        int mid=(l+r)>>1,lson=pos<<1,rson=pos<<1|1;
        if(mid<L)return query(mid+1,r,rson,L,R,tree);
        else if(mid>=R)return query(l,mid,lson,L,R,tree);
        else return Math.max(query(l,mid,lson,L,R,tree),query(mid+1,r,rson,L,R,tree));
    }
    public static void main(String args[]){
        int []score=new int[200005];
        int []Tree=new int[3500000];
        Scanner in=new Scanner(System.in);
        while(in.hasNextInt()){
            int n=in.nextInt(),m=in.nextInt();
            for(int i=1;i<=n;i++)score[i]=in.nextInt();
            build(1,n,1,Tree,score);
            for(int i=1;i<=m;i++){
                String p=in.next();
                if(p.equals("Q")){
                    int jyx=in.nextInt(),jyy=in.nextInt();
                    int jy=query(1,n,1,jyx,jyy,Tree);
                    System.out.println(jy);
                }
                else{
                    int jyx=in.nextInt(),jyy=in.nextInt();
                    insert(1,n,1,jyx,jyy,Tree);
                }
            }
        }
    }
}
时间: 2024-10-04 21:40:28

HDU 1754 Java的相关文章

hdu 1754:I Hate It(线段树,入门题,RMQ问题)

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

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): 37367    Accepted Submission(s): 14775 Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是

hdu 1754 I Hate It(线段树 之 单点更新 求最值)

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

hdu 1754  I Hate It (线段树)

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754 Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 35640    Accepted Submission(s): 14034 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 4927 JAVA大数类

题目大意:给定一个长度为n的序列a,每次生成一个新的序列,长度为n-1,新序列b中bi=ai+1?ai,直到序列长度为1.输出最后的数. 思路:这题实在是太晕了,比赛的时候搞了四个小时,从T到WA,唉--对算组合还是不太了解啊,现在对组合算比较什么了-- import java.io.*; import java.math.*; import java.util.*; public class Main { public static void main(String[] args) { Sca

HDU 1754 I Hate It (线段树 单点更新)

题目链接 中文题意,与上题类似. 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <queue> 5 #include <cstdlib> 6 #include <algorithm> 7 const int maxn = 200000+10; 8 using namespace std; 9 int a[maxn], n, m; 10

HDU 1754 I Hate It 基础线段树

用区间值m表示这段区间的最大值,一直更新这个区间的最大值,很基础的线段树 #include<iostream> #include<stdio.h> using namespace std; #define N 200005 struct node{ int l,r,m; }tree[N*4]; int a[N]; void build(int left,int right,int i){ tree[i].l=left; tree[i].r=right; if(tree[i].l==

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

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