POJ 3264 RMQ Spare Table算法
来源:互联网 发布:jquery.js文件下载 编辑:程序博客网 时间:2024/06/05 22:41
今天下午大帝讲的,我以前也不懂,所以也就跟着学学了,把中间的那个状态转移方程学错了好几次,于是就wa了
好几发。
#include<iostream>#include<cstdio>#include<algorithm>#define maxn 200010using namespace std;int a[maxn],m,n,b[maxn],fl[maxn][50],fr[maxn][50];void solve(){ b[1]=0;//其实就是用来计算除以log2的值 for(int i=2;i<=m;i++) { b[i]=b[i-1]; if((1<<b[i]+1)==i) b[i]++; } for(int i=0;i<m;i++) fl[i][0]=fr[i][0]=a[i]; for(int i=m-1;i>=0;i--) for(int j=1;i+(1<<j)-1<m;j++)//容易出错的地方 { fl[i][j]=min(fl[i][j-1],fl[i+(1<<j-1)][j-1]); fr[i][j]=max(fr[i][j-1],fr[i+(1<<j-1)][j-1]); }}int qma(int l,int r){ int len=(r-l+1); int k=b[len]; return max(fr[l][k],fr[r-(1<<k)+1][k]);}int qmi(int l,int r){ int len=r-l+1; int k=b[len]; return min(fl[l][k],fl[r-(1<<k)+1][k]);}int main(){ scanf("%d%d",&m,&n); for(int i=0;i<m;i++) cin>>a[i]; solve(); while(n--) { int u,v; cin>>u>>v; u--; v--; printf("%d\n",qma(u,v)-qmi(u,v)); } return 0;}
0 0
- POJ 3264 RMQ Spare Table算法
- POJ 3264 RMQ--ST 算法
- POJ 3264 RMQ 分块算法
- poj 3264 Balanced Lineup(两遍sparse-table算法的rmq问题)
- RMQ算法 - Sparse-Table
- RMQ—Sparse_Table算法 poj 3264
- poj 3264 RMQ问题 ST算法
- POJ 3264 RMQ问题之SparseTable算法
- POJ 3264 RMQ问题 ST算法
- poj 3264 RMQ查找最大最小算法
- Poj 3264 Balanced Lineup【RMQ----ST算法】
- Sparse Table算法(求解RMQ)
- RMQ算法之Sparse Table算法
- 区间最小值查询,RMQ,Sparse-Table算法
- 静态RMQ的Sparse Table算法
- RMQ问题之Sparse-Table算法
- RMQ问题的Sparse-Table算法
- RMQ问题之Sparse-Table算法
- c++ 使用TinyXML 读取xml数据
- linux 命令
- 判断整数转化为2进制之后1的个数
- 【图算法之二分图】HDU 1151---Air Raid
- ios设置小图标
- POJ 3264 RMQ Spare Table算法
- 面试知识点总结、积累
- HDU 1150 Machine Schedule(最小点覆盖)
- 结队开发之多storyboard
- hdu 3879 hdu 3917 构造最大权闭合图 俩经典题
- poj 1236
- [C++] vector数组越届及关于引用的
- 分析最常见最有效的公共传播方方式
- Maven