我早期在csdn的博客之一,正好复习st表就拿过来。
http://write.blog.csdn.net/mdeditor#!postId=63713810
这道题其实本身不难(前提是你得掌握线段树或者st表当中的一种)
那么这道题我们来讲一讲st表(因为这题询问次数有点多)
一般关系式
dp[i][j]=min/max(dp[dp[i][j-1],dp[i+pow(2,j-1)][j-1]])
可以看出来吧,其实这就是动态规划
好的我们来解释一下关系式是什么吧
首先这个是一个二分,具体是什么呢:
其中的i代表起点,2^j代表起点到中点的长度。
如果还不懂的话,我们来看一下样例(求最小值)
2 6 4 8 9 7 11
好的,我们来模拟一下程序的运作
dp[1][0]=2;dp[2][0]=6……dp[7][0]=11;
然后dp[1][1]=min(2,6)=2; dp[3][1]=min(4,8)=4;……dp[6][1]=min(7,11)=7;
再然后dp[1][2]=min(2,4)=2;……
如此这般如此这般
怎么样,给一个样例是不是就很清楚了。
然后就是查询了,但是有时候因为查询区间比较大,没办法一步到位怎么办
例如查询1-5的区间,然而按照我们上面的定义来的话,我们最大可以调用dp[1][2],然而却落了第五个点。
其实很简单,结果=min(dp[1][2],dp[2][2])
原因也无需解释了吧
那么我们用代码实现吧,顺便把这道题写了吧
#include<cstdio>
#include<cmath>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int maxn[][],minn[][];
int qpow(int a){
return (<<a);
}
void st(int n){
for(int j=;j<=int(log2(n));j++){
for(int i=;i<=n;i++){
int p=i+pow(,j)-;
if(p>n)continue;
maxn[i][j]=max(maxn[i][j-],maxn[i+int(qpow(j-))][j-]);
minn[i][j]=min(minn[i][j-],minn[i+int(qpow(j-))][j-]);
}
}
return;
}
int main(){
int n,q,k,x,y;
scanf("%d%d",&n,&q);
for(int i=;i<=n;i++){
scanf("%d",&maxn[i][]);
minn[i][]=maxn[i][];
}
st(n);
for(int i=;i<=q;i++){
scanf("%d%d",&x,&y);
if(y<x){
int t=x;x=y;y=t;
}
double s=y-x+;
int ke=log2(s);
int he=qpow(int(log2(s)));
int t1=max(maxn[x][int(log2(s))],maxn[y-he+][ke]);
int t2=min(minn[x][int(log2(s))],minn[y-he+][ke]);
printf("%d\n",t1-t2);
}
return ;
}

POJ3264:Balanced Lineup——题解+st表解释的更多相关文章

  1. 【洛谷】P2880 [USACO07JAN]平衡的阵容Balanced Lineup(st表)

    题目背景 题目描述: 每天,农夫 John 的N(1 <= N <= 50,000)头牛总是按同一序列排队. 有一天, John 决定让一些牛们玩一场飞盘比赛. 他准备找一群在对列中为置连 ...

  2. POJ 3264 Balanced Lineup 【ST表 静态RMQ】

    传送门:http://poj.org/problem?id=3264 Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total S ...

  3. 洛谷 P2880 [USACO07JAN]Balanced Lineup G (ST表模板)

    题意:给你一组数,询问\(q\)次,问所给区间内的最大值和最小值的差. 题解:经典RMQ问题,用st表维护两个数组分别记录最大值和最小值然后直接查询输出就好了 代码: int n,q; int a[N ...

  4. Luogu P2880 [USACO07JAN]平衡的阵容Balanced Lineup (ST表模板)

    传送门(ST表裸题) ST表是一种很优雅的算法,用于求静态RMQ 数组l[i][j]表示从i开始,长度为2^j的序列中的最大值 注意事项: 1.核心部分: ; (<<j) <= n; ...

  5. [POJ3264]Balanced Lineup(RMQ, ST算法)

    题目链接:http://poj.org/problem?id=3264 典型RMQ,这道题被我鞭尸了三遍也是醉了…这回用新学的st算法. st算法本身是一个区间dp,利用的性质就是相邻两个区间的最值的 ...

  6. poj3264 - Balanced Lineup(RMQ_ST)

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 45243   Accepted: 21240 ...

  7. POJ3264 Balanced Lineup

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 44720   Accepted: 20995 ...

  8. poj 3264 Balanced Lineup 题解

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536KB   64bit IO Format: %I64d & %I64u Subm ...

  9. poj3264Balanced Lineup(倍增ST表)

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 52328   Accepted: 24551 ...

随机推荐

  1. Unbuntu安装RVM

    apt-get install curl #安装rvm curl -L https://get.rvm.io | bash #执行启动 source /home/mafei/.rvm/scripts/ ...

  2. 92套AE抖音快闪模板(精品)

    包含很多场景和类型,直接用即可,下载地址:百度网盘,https://pan.baidu.com/s/1bRFql1zFWyfpTAwa6MhuPA 内容截图:    

  3. 「Python」matplotlib备忘录

    总结了一下网上现有的资源,得到了一些东西.随手做个备忘. 更多设置见:https://matplotlib.org/users/customizing.html. 导入 import matplotl ...

  4. Unity编辑器 - TreeView控件笔记

    用起来有一些规则,写个简单的案例以备查阅: using System.Collections.Generic; using UnityEditor.IMGUI.Controls; using Unit ...

  5. linux学习总结----redis总结

    安装 下载:打开redis官方网站,推荐下载稳定版本(stable) 解压 tar zxvf redis-3.2.5.tar.gz 复制:推荐放到usr/local目录下 sudo mv -r ...

  6. 【MySQL解惑笔记】忘记MySQL数据库密码

    破解MySQL密码 一.MySQL5.7.5之前 只要有系统root密码就可以破解: [root@host- ~]# vim /etc/my.cnf //在配置文件中加入如下内容 [mysqld] s ...

  7. django启动创建用户失败

    a django应用启动 b 访问127.0.0.1:8000,报错信息如下,原因为没有这个用户需要创建下用户 c 创建用户过程中报错原因是因为添加了app需要告诉django,这个 模型发生了改变, ...

  8. [2017 - 2018 ACL] 对话系统论文研究点整理

    (论文编号及摘要见 [2017 ACL] 对话系统. [2018 ACL Long] 对话系统. 论文标题[]中最后的数字表示截止2019.1.21 google被引次数) 1. Domain Ada ...

  9. 深度学习图像分割——U-net网络

    写在前面: 一直没有整理的习惯,导致很多东西会有所遗忘,遗漏.借着这个机会,养成一个习惯. 对现有东西做一个整理.记录,对新事物去探索.分享. 因此博客主要内容为我做过的,所学的整理记录以及新的算法. ...

  10. defineporperty 的使用 设置对象的只读或只写属性

    <!DOCTYPE html> <html lang="en"> <head> <title>Document</title& ...