zoukankan      html  css  js  c++  java
  • POJ 3264 RMQ水题

    题目大意就是有很多牛。告诉你每只牛的高度。然后有很多个询问。输出该区间内的最大身高差。也就是用RMQ求最大值最小值。貌似还可以用线段树。然而,我还不会线段树。。。。。T_T

    可能是太多组数据了。cin和cout会TLE。换成scanf和printf就顺当的AC了。。。。啦啦啦、

    RMQ还是只会用模板。。T_T

    附代码:
    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    #include<math.h>
    #define maxn 51000
    #define maxm 20
    using namespace std;

    int dpmax[maxn][maxm];
    int dpmin[maxn][maxm];
    int n, q;

    int main()
    {
        while(cin >> n >> q)
        {
            for (int i=1; i<=n; ++i)   // 下标从开始。初始化dpmax和dpmin数组。
            {
               // cin >> dpmax[i][0];
                scanf("%d", &dpmax[i][0]);
                dpmin[i][0] = dpmax[i][0];
            }

            int end_j = log(n + 0.0) / log(2.0); // 预处理。计算每个区间的最大值和最小值。所以询问非常快。
            for (int j=1; j<=end_j; ++j)
            {
                int end_i = n + 1 - (1 << j);  // dpmax[i][j] 表示从第 i 个数开始。长度为1<<j的区间。包括第i个数。
                for (int i=1; i<=end_i; ++i)
                {
                    dpmax[i][j] = max(dpmax[i][j-1], dpmax[i+(1<<(j-1))][j-1]);
                    dpmin[i][j] = min(dpmin[i][j-1], dpmin[i+(1<<(j-1))][j-1]);
                }
            }

            for (int i=0; i<q; ++i)
            {
                int st, ed;
                cin >> st >> ed;
                int k = log(ed - st + 1.0) / log(2.0);   //需要讨论的最大区间长度。
                int ansmax = max(dpmax[st][k], dpmax[ed-(1<<k)+1][k]);
                int ansmin = min(dpmin[st][k], dpmin[ed-(1<<k)+1][k]);
                //cout << ansmax - ansmin << endl;
                printf("%d ", ansmax - ansmin);
            }
        }
        return 0;
    }


    RMQ复习链接:http://blog.csdn.net/liang5630/article/details/7917702

  • 相关阅读:
    c
    罗扎诺夫高效记忆音乐【推荐试试】
    通过信息系统项目管理师最高可申领补贴2000元
    人事考试网【您有新信息】浙江人事考试网_浙江省公务员考试网_2017浙江公务员考试_中公浙江
    几种需求管理工具(转)_伊处_新浪博客
    PLM_百度百科
    统御软件 (oKit)| 项目管理软件,项目管理咨询,项目需求管理工具,集成研发管理平台 ——管理咨询与实施工具 一站式项目管理解决方案
    Oracle PLM
    Oracle PLM
    Oracle PLM
  • 原文地址:https://www.cnblogs.com/icode-girl/p/4591743.html
Copyright © 2011-2022 走看看