zoukankan      html  css  js  c++  java
  • HDU 1754

    选最大值。线段树。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <climits>
    #include <string.h>
    #include <queue>
    #include <cmath>
    #include <map>
    #include <vector>
    #define LL  __int64
    using namespace std;
    
    const int N=200010;
    const int root=1;
    struct Node{
    	int val,left,right;
    }tree[N*4+100];
    int n,m;
    int score[N],pos[N];
    
    void build(int rt,int l,int r){
    	if(l==r){
    		tree[rt].val=score[l];
    		tree[rt].left=l;
    		tree[rt].right=r;
    		pos[l]=rt;
    		return;
    	}
    	tree[rt].left=l;
    	tree[rt].right=r;
    	build(rt*2,l,(r+l)/2);
    	build(rt*2+1,(r+l)/2+1,r);
    	tree[rt].val=max(tree[rt*2].val,tree[rt*2+1].val);
    }
    
    int query(int now,int l,int r){
    	int L=tree[now].left ,R=tree[now].right;
    	if(l<=L&&r>=R){
    		return tree[now].val;
    	}
    	int m=(L+R)/2;
    	if(l>=m+1){
    		return query(now*2+1,l,r);
    	}
    	else if(r<=m) return query(now*2,l,r);
    	else{
    		return max(query(now*2,l,r),query(now*2+1,l,r));
    	}
    }
    
    void update(int now,int s){
    	tree[now].val=s;
    	now/=2;
    	while(now>0){
    		tree[now].val=max(tree[now*2].val,tree[now*2+1].val);
    		now/=2;
    	}
    }
    
    int main(){
    	int p,q; char act;
    	while(scanf("%d%d",&n,&m)!=EOF){
    		for(int i=1;i<=n;i++)
    		scanf("%d",&score[i]);
    		getchar();
    		build(root,1,n);
    		for(int i=1;i<=m;i++){
    			scanf("%c%d%d",&act,&p,&q);
    			getchar();
    //			cout<<act<<p<<q<<endl;
    			if(act=='Q'){
    				printf("%d
    ",query(root,p,q));
    			}
    			else{
    				p=pos[p];
    				update(p,q);
    			}
    		}
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    JavaSE-集合的遍历
    JavaSE-Collection常用方法
    JavaSE-异常
    JavaSE-匿名类_匿名内部类的使用
    JavaSE-内部类
    JavaSE-接口应用举例
    java线程的使用(Runnable)
    list根据所存对象属性排序
    Unable to locate appropriate constructor on class异常
    redis在java项目中的使用
  • 原文地址:https://www.cnblogs.com/jie-dcai/p/4314474.html
Copyright © 2011-2022 走看看