zoukankan      html  css  js  c++  java
  • POJ3264(分桶法)

    题目思路直接,用分桶法管理每一块的最大值和最小值就可以

    #include<cstdio>
    #include<cmath>
    #include<iostream>
    #include<algorithm>
    #include<vector>
    #include<string>
    #include<map>
    #define DEBUG(x) cout << #x << " = " << x << endl
    using namespace std;
    const int N=50000+10;
    const int S=250;
    int a[N];
    vector<int>vec[S];
    int main()
    {
        ///freopen("in.txt","r",stdin);
        int n,q;
        scanf("%d%d",&n,&q);
        for(int i=1;i<=n;i++){
            scanf("%d",&a[i]);
            vec[i/(S+1)].push_back(a[i]);
        }
        for(int i=0;i<n/(S+1);i++){
            sort(vec[i].begin(),vec[i].end());
        }
        while(q--){
            int L,R;
            scanf("%d%d",&L,&R);
            int Min=0x3f3f3f3f,Max=-1;
            int tl=L,tr=R;
            while(tl<=tr&&tl/(S+1)==L/(S+1)){
                Min=min(a[tl],Min);
                Max=max(a[tl++],Max);
            }
            while(tl<=tr&&tr/(S+1)==R/(S+1)){
                Min=min(a[tr],Min);
                Max=max(a[tr--],Max);
            }
            while(tl<=tr){
                int bn=tl/(S+1);
                int s=0,e=vec[bn].size()-1;
                Min=min(vec[bn][s],Min);
                Max=max(vec[bn][e],Max);
                tl+=S;
            }
            printf("%d
    ",Max-Min);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    Android开发系列之ListView用法
    自省
    fake feeling ?
    我心中的天使
    2020.6.16
    python面试题
    tcp
    Short + skip + limit
    01_pyttsx3_将文本文字转为语音播放
    mongo_Linux下不进入数据库查数据
  • 原文地址:https://www.cnblogs.com/MalcolmMeng/p/8689023.html
Copyright © 2011-2022 走看看