题目大意就是有很多牛。告诉你每只牛的高度。然后有很多个询问。输出该区间内的最大身高差。也就是用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\n", ansmax - ansmin);
        }
    }
    return 0;
}

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

POJ 3264 RMQ水题的更多相关文章

  1. poj 3264 RMQ 水题

    题意:找到一段数字里最大值和最小值的差 水题 #include<cstdio> #include<iostream> #include<algorithm> #in ...

  2. POJ 3264 RMQ裸题

    POJ 3264 题意:n个数,问a[i]与a[j]间最大值与最小值之差. 总结:看了博客,记下了模板,但有些地方还是不太理解. #include<iostream> #include&l ...

  3. 【转】POJ百道水题列表

    以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight ...

  4. Poj 1552 Doubles(水题)

    一.Description As part of an arithmetic competency program, your students will be given randomly gene ...

  5. poj 3264 RMQ

    直接写个RMQ就能过. #include<iostream> #include<cstdio> #include<cstring> #include<algo ...

  6. 最小费用最大流模板 poj 2159 模板水题

    Going Home Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 15944   Accepted: 8167 Descr ...

  7. POJ 1837 Balance 水题, DP 难度:0

    题目 http://poj.org/problem?id=1837 题意 单组数据,有一根杠杆,有R个钩子,其位置hi为整数且属于[-15,15],有C个重物,其质量wi为整数且属于[1,25],重物 ...

  8. poj 3264(RMQ或者线段树)

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 42929   Accepted: 20184 ...

  9. POJ - 3090 gcd水题

    大概题意就是求\(1 \le i,j \le n\)的\(gcd(i,j) = 1\)的个数+2(对于0的特判) 正解应该是欧拉函数或者高逼格的莫比乌斯反演 但数据实在太水直接打表算了 /*H E A ...

随机推荐

  1. Online Judge 2014 K-th Number -主席树

    You are working for Macrohard company in data structures department. After failing your previous tas ...

  2. VC++开机自动启动程序的几种方法 (转载)

    转载:http://blog.csdn.net/zhazhiqiang/article/details/51909703 很多监控软件要求软件能够在系统重新启动后不用用户去点击图标启动项目,而是直接能 ...

  3. Harmonic Number (调和级数+欧拉常数)题解

    Harmonic Number In mathematics, the nth harmonic number is the sum of the reciprocals of the first n ...

  4. FAST:通过Floodlight控制器下发流表

    参考: Floodlight+Mininet搭建OpenFlow(四):流表操作 通过Floodlight控制器下发流表 下发流表的方式有两种: 1.借助Floodlight的北向API,利用curl ...

  5. python分享题目

    目前的分享题目:1 python在云计算虚拟教室领域的应用 2 python与虚拟货币(华三工程师) 3 python在移动游戏的实践(爪子) 4 python互联网敏捷运维实践(蓝雪) 5 pyth ...

  6. Codeforces Round #303 (Div. 2)E. Paths and Trees 最短路

    E. Paths and Trees time limit per test 3 seconds memory limit per test 256 megabytes input standard ...

  7. TinyXML用法小结2

    参考:http://www.cnblogs.com/hgwang/p/5833638.html TinyXML用法小结 1.      介绍 Tinyxml的官方网址:http://www.grinn ...

  8. boosting方法

    概述 Boosting基本思想: 通过改变训练数据的概率分布(训练数据的权值分布),学习多个弱分类器,并将它们线性组合,构成强分类器. Boosting算法要求基学习器能对特定的数据分布进行学习,这可 ...

  9. dom 绑定数据

    一.绑定/修改    .jQuery修改属性值,都是在内存中进行的,并不会修改 DOM 1.  对象绑定  $(selector).data(name) $("#form").da ...

  10. Codeforces 847H - Load Testing

    847H - Load Testing 思路:dp. 代码: #include<bits/stdc++.h> using namespace std; #define ll long lo ...