【模板】二维rmq
来源:互联网 发布:网络订餐食品安全现状 编辑:程序博客网 时间:2024/05/01 09:21
前言
某次遇到一题需要使用,于是便补充一下。
二维rmq
就是在一个静态矩阵中询问多个子矩阵最值的问题。
具体来说我们可以设状态
我们将
然后对于查询,因为是询问矩阵,所以要查询四种情况,具体来说如下:
如果查询矩阵左上角为
设
那么:
Code
const int N=1000;int f[11][11][N][N];int a[N][N];int n,m;void pre(){ fo(i,1,n) fo(j,1,m) f[0][0][i][j]=a[i][j]; int p=int(log2(n)),q=int(log2(m)); fo(k,0,p) fo(l,0,q) if(k+l) fo(i,1,n-(1<<k)+1) fo(j,1,m-(1<<l)+1) if (!l) f[k][l][i][j]=max(f[k-1][l][i][j],f[k-1][l][i+(1<<(k-1))][j]); else f[k][l][i][j]=max(f[k][l-1][i][j],f[k][l-1][i][j+(1<<(l-1))]);}int rmqmax(int x1,int y1,int x2,int y2){ int p=int(log2(x2-x1+1)),q=int(log2(y2-y1+1)); return max(max(f[p][q][x1][y1],f[p][q][x2-(1<<p)+1][y1]),max(f[p][q][x1][y2-(1<<q)+1],f[p][q][x2-(1<<p)+1][y2-(1<<q)+1]));}
1 0
- 二维RMQ模板
- 二维RMQ模板
- 【模板】二维rmq
- RMQ(二维模板)
- HDU 2888 二维RMQ 模板
- hdoj2888Check Corners【二维RMQ模板】
- ZOJ 2859 二维RMQ(模板)
- hdu 2888 二维RMQ模板题
- HDU 2888 Check Corners 二维RMQ模板
- 一维RMQ和二维RMQ模板以及用法
- 一维RMQ和二维RMQ模板以及用法
- 二维rmq
- 二维RMQ
- hdu-2888 Check Corners(二维RMQ模板题)
- POJ 2019 Cornfields(二维RMQ 最值查询模板)
- HDU 2888 Check Corners(二维RMQ模板)
- rmq 模板
- RMQ模板
- React Native Flexbox布局
- 【扩展】浏览器对应的selenium版本问题
- Django项目调试心得
- 工具类: EditText保留小数点后3位
- 简单的数列排序
- 【模板】二维rmq
- Android 内容提供器小结
- 计算机原理课程:1
- MySQL不支持 SELECT INTO FROM 这种语句,MySQL SELECT INTO FROM 语句的替代方案
- typedef定义新的类型标识符
- 使用fastboot命令刷机流程详解
- 工作流管理系统开发之十四 流程设计器属性页面之实现篇
- Android加载Gif图片的一般方法:Movie实现
- 如何撰写创业计划书