HDU 1754 I Hate It 线段树RMQ

2014-11-24 10:42:40 · 作者: · 浏览: 0

题目大意:

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

这让很多学生很反感。

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

思路:

线段树即可。。

PS:某一题线段树太久没写一直调不出,先来做做水题。。

I Hate It !

#include
  
   
#include
   
     #include
    
      using namespace std; typedef long long LL; const int MAXN=200000; int data[MAXN]; const int INF=-0x3fffffff; int A[MAXN],maxv[MAXN*3]; int n,qL,qR,p,v; void build(int k,int L,int R) { if(L==R) maxv[k]=A[L]; else { int m=(L+R)/2; build(k*2,L,m); build(k*2+1,m+1,R); maxv[k]=max(maxv[k*2],maxv[k*2+1]); } } // 查询区间[a,b] 对应区间[L,R]; int query(int k,int L,int R,int a,int b) { int m=(L+R)/2,ans=INF; if(a<=L && R<=b) return maxv[k]; if(a<=m) ans=max(ans,query(k*2,L,m,a,b)); if(m