[Usaco07Jan&luogu2880] Balanced Lineup

来源:互联网 发布:数据库建模培训 编辑:程序博客网 时间:2024/05/21 17:52

题目链接

题解:rmq

#include <cstdio>#include <cmath>#include <iostream>using namespace std;#define pow2(x) (1<<(x))const int M=50005;int n,T,x,y;int a[M],Fmin[M][25],Fmax[M][25];void max_rmq(){    for(int i=1;i<=n;i++)    Fmax[i][0]=a[i];    for(int j=1;j<=20;j++)    for(int i=1;i+pow2(j)-1<=n;i++)    Fmax[i][j]=max(Fmax[i][j-1],Fmax[i+pow2(j-1)][j-1]);    }int max_query(int i,int j){    int k=log(j-i+1)/log(2);    return max(Fmax[i][k],Fmax[j-pow2(k)+1][k]);  }void min_rmq(){    for(int i=1;i<=n;i++)    Fmin[i][0]=a[i];    for(int j=1;j<=20;j++)    for(int i=1;i+pow2(j)-1<=n;i++)    Fmin[i][j]=min(Fmin[i][j-1],Fmin[i+pow2(j-1)][j-1]);    }int min_query(int i,int j){    int k=log(j-i+1)/log(2);    return min(Fmin[i][k],Fmin[j-pow2(k)+1][k]);  }int main(){    cin>>n>>T;    for(int i=1;i<=n;i++)    scanf("%d",&a[i]);    min_rmq();    max_rmq();    while(T--)    {        scanf("%d%d",&x,&y);        printf("%d\n",max_query(x,y)-min_query(x,y));    }    return 0;}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小孩多动症怎么办南京脑康必问 儿童老是咬指甲怎么办 领导回复收到该怎么办 怀孕了想离婚怎么办 双方没离婚怀孕怎么办 怀孕后想离婚怎么办 怀孕6个月想离婚怎么办 怀孕了想要离婚怎么办 怀孕期间想离婚怎么办 现在怀孕想离婚怎么办 孩子跟父母顶嘴怎么办 孩子嘴歪了怎么办 孩子跟老师顶嘴怎么办 孩子顶嘴父母怎么办读后感 孩子顶嘴总嬉皮笑脸怎么办 孩子和妈妈顶嘴怎么办 宝宝上火眼睛红怎么办 引产的孩子活着怎么办 八个月引产胎儿怎么办 小孩子有好动症怎么办 婴儿高烧38.5度怎么办 孩子发烧怎么办39度 宝宝发烧到37.7怎么办 几个月宝宝发烧怎么办 孩子八个月发烧怎么办 8个多月宝宝发烧怎么办 婴儿水便分离怎么办 宝贝发烧38.5度怎么办 调皮好动的孩子怎么办 小娃娃反复发烧怎么办 孩子在幼儿园好动怎么办 幼儿园好动的孩子怎么办 孕6月拉稀怎么办 孕3月拉稀怎么办 孕八个月拉肚子怎么办 怀孕七个月拉肚子怎么办 宝宝专注力差怎么办 8个宝宝拉肚子怎么办 孩子偏食不吃菜怎么办 孩子好动不认真学习怎么办 写作业写着写着就会发呆怎么办