poj 3264 區間最值

來源:互聯網
上載者:User
#include<cstdio>#include<string.h>#include<stdlib.h>#include<algorithm>#include<cmath>#include<iostream>using namespace std;#define lson l,mid,rt<<1#define rson mid+1,r,rt<<1 | 1const int N=51002;int Max[N<<2],Min[N<<2],mmax,mmin;void PushUp(int rt){  Max[rt]=max(Max[rt<<1],Max[rt<<1|1]);  Min[rt]=min(Min[rt<<1],Min[rt<<1|1]);}void build(int l,int r,int rt){  if(l==r){      scanf("%d",&Min[rt]);      Max[rt]=Min[rt];     // printf("%d\n",Max[rt]);      return;      }  int mid=(l+r)>>1;  build(lson);  build(rson);  PushUp(rt);} int query(int L,int R,int l,int r,int rt){    if(l>=L && r<=R){      return Min[rt];    }     int mid=(l+r)>>1;     int  MM=1100000;     if(mid >= L)      MM=min(MM,query(L,R,lson));     if(mid < R)      MM=min(MM, query(L,R,rson));   //  MM=min(query(L,mid,lson),query(mid+1,R,rson));    //MMM=make_pair(max(max(MM.first,MM.second),max(M.first,M.second)),min(min(MM.first,MM.second),min(M.first,M.second)));    return MM;}int Query(int L,int R,int l,int r,int rt){    if(l>=L&&r<=R){      return Max[rt];    }     int mid=(l+r)>>1;     int res=0;     if(L<=mid)      res= max(res,Query(L,R,lson));     if(mid <R)      res =max(res,Query(L,R,rson));    return res;}#define Fin freopen("1.txt","r",stdin);#define Fout freopen("2.txt","w",stdout);int main(){   // Fin   // Fout     int a,b;     int n,m;     while(~scanf("%d%d",&n,&m)){     build(1,n,1);     while(m--){       scanf("%d%d",&a,&b);       //int Q=query(a,b,1,n,1);        printf("%d\n",Query(a,b,1,n,1)-query(a,b,1,n,1));      }     }  return 0;}

水題不解釋,不過正在想能不能一下返回最大值和最小值,比如用pair<int,int>,這題也可以用RMQ線上來搞:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.