zoukankan      html  css  js  c++  java
  • POJ 3264 Balanced Lineup RMQ

    回顾一下一些基础算法,Sparse Table有种dp的感觉,写起来有点棘手吧,主要是因为下标的问题,贴一记代码,等下写一个非递归的线段树试试。

    #pragma warning(disable:4996)
    #include<iostream>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<cstdio>
    #include<vector>
    #include<cmath>
    #define maxn 50000
    #define max_logn 20
    using namespace std;
    
    int dmin[maxn+20][max_logn];
    int dmax[maxn+20][max_logn];
    int a[maxn+50];
    int n,m;
    
    int main()
    {
    	while (cin >> n>>m)
    	{
    		for (int i = 1; i <= n; i++) scanf("%d", a + i);
    		for (int i = 1; i <= n; i++) dmin[i][0] =dmax[i][0] = a[i];
    		for (int j = 1; (1<<j) <= n; j++){
    			for (int i = 0; i+(1<<j)-1 <= n; i++){
    				dmin[i][j] = min(dmin[i][j - 1], dmin[i + (1<<(j-1))][j - 1]);
    				dmax[i][j] = max(dmax[i][j - 1], dmax[i + (1<<(j-1))][j - 1]);
    			}
    		}
    		int l, r;
    		for (int i = 0; i < m; i++){
    			scanf("%d%d", &l, &r);
    			int k = 0; int len = r - l + 1;
    			while ((1 << (k+1)) < len)  k++;
    			printf("%d
    ", max(dmax[l][k],dmax[r-(1<<k)+1][k])-min(dmin[l][k], dmin[r - (1 << k) + 1][k]));
    		}
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    观察者模式
    如何通过反射创建对象?
    java8新特性
    idea 常用快捷键--标蓝
    java多线程基础篇-01
    zookeeper单机版及操作
    redis和jedis常用api
    Mac连接服务器
    redis基本介绍及安装01
    docker 安装mobsf及部分命令01
  • 原文地址:https://www.cnblogs.com/chanme/p/3537418.html
Copyright © 2011-2022 走看看