zoukankan      html  css  js  c++  java
  • Balanced Lineup(RMQ)

    原题传送门

    就是裸RMQ啊。。

    求区间最大值和区间最小值,一看就像RMQ,当然线段树貌似也可以。

    至于算法嘛。自己学~(好吧,放个传送门。。。

    然后就是最后把maxsum-minsum就好啦233~

    时间效率:预处理O(N)查找O(1)

    是不是很快~

    下面贴代码

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    int n,q;
    int a,b;
    int maxsum,minsum;
    int maxn[50001][20];
    int num[50001];
    int minn[50001][20];
    void RMQ(int s)
    {
        for(int j=1;j<=19;j++)
        for(int i=1;i<=n;i++){
            if(i+(1<<j)-1<=n)
            {
                maxn[i][j]=max(maxn[i][j-1],maxn[i+(1<<(j-1))][j-1]);
                minn[i][j]=min(minn[i][j-1],minn[i+(1<<(j-1))][j-1]);
            }
        }
    }
    int main(){
        scanf("%d%d",&n,&q);
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&num[i]);
            maxn[i][0]=minn[i][0]=num[i];
        }
        RMQ(n);
        for(int i=1;i<=q;i++)
        {
            scanf("%d%d",&a,&b);
            int k=(int)(log(b-a+1.0)/log(2.0));
            maxsum=max(maxn[a][k],maxn[b-(1<<k)+1][k]);
            minsum=min(minn[a][k],minn[b-(1<<k)+1][k]);
            printf("%d
    ",maxsum-minsum);
        }
    }
  • 相关阅读:
    TOMCAT添加管理用户认证
    NGINX配置详解及应用
    Zabbix部署
    NGINX+TOMCAT实现反向代理
    数据库-高级部分
    数据库-用户管理与pymysql
    数据库-表操作(CRUD)
    数据库-表关系练习
    数据库-表关系
    数据库-基础概念
  • 原文地址:https://www.cnblogs.com/ghostfly233/p/6836030.html
Copyright © 2011-2022 走看看