Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 7182 Accepted Submission(s): 2583
1 /******************************* 2 3 Date : 2015-11-17 21:40:22 4 Author : WQJ (1225234825@qq.com) 5 Link : http://www.cnblogs.com/a1225234/ 6 Name : HD1754 7 8 ********************************/ 9 #include <iostream> 10 #include <cstdio> 11 #include <algorithm> 12 #include <cmath> 13 #include <cstring> 14 #include <string> 15 #include <set> 16 #include <vector> 17 #include <queue> 18 using namespace std; 19 const int Max=200000+5; 20 int sc[Max],segTree[Max<<2]; 21 int l,r; 22 int build(int node,int begin,int end) 23 { 24 int mid=(begin+end)/2; 25 if(begin==end) segTree[node]=sc[end]; 26 else{ 27 build(node*2,begin,mid); 28 build(node*2+1,mid+1,end); 29 segTree[node]=max(segTree[node*2],segTree[node*2+1]); 30 } 31 return 0; 32 } 33 int query(int node,int begin,int end) 34 { 35 int p1,p2; 36 int mid=(begin+end)/2; 37 if(r<begin||l>end) return -1; 38 if(l<=begin&&end<=r) 39 return segTree[node]; 40 p1=query(node*2,begin,mid); 41 p2=query(node*2+1,mid+1,end); 42 if(p1==-1) return p2; 43 if(p2==-1) return p1; 44 return max(p1,p2); 45 } 46 int updata(int node,int begin,int end,int pos,int e) 47 { 48 int mid=(begin+end)/2; 49 if(begin==end) 50 { 51 segTree[node]=e; 52 return 0; 53 } 54 if(pos<=mid) 55 updata(node*2,begin,mid,pos,e); 56 else 57 updata(node*2+1,mid+1,end,pos,e); 58 segTree[node]=max(segTree[node*2],segTree[node*2+1]); 59 return 0; 60 } 61 int main() 62 { 63 int N,M; 64 int i,j,k,e; 65 char ch; 66 freopen("in.txt","r",stdin); 67 while(scanf("%d%d",&N,&M)!=EOF) 68 { 69 memset(segTree,0,sizeof(segTree)); 70 for(i=0;i<N;i++) 71 { 72 scanf("%d",&e); 73 sc[i]=e; 74 } 75 build(1,0,N-1); 76 //for(i=0;i<20;i++) 77 // cout<<segTree[i]<<" "; 78 for(i=0;i<M;i++) 79 { 80 int a,b; 81 getchar(); 82 scanf("%c%d%d",&ch,&a,&b); 83 if(ch==‘Q‘) 84 { 85 l=a-1,r=b-1; 86 cout<<query(1,0,N-1)<<endl; 87 } 88 else if(ch==‘U‘) 89 { 90 updata(1,0,N-1,a-1,b); 91 } 92 } 93 } 94 return 0; 95 }
原文:http://www.cnblogs.com/a1225234/p/4973097.html