HDU 2888 二维RMQ 模板
来源:互联网 发布:linux find命令详解 编辑:程序博客网 时间:2024/05/21 21:02
#include <iostream>#include <cstdio>#include <cstring>#include <vector>#include <cmath>using namespace std ;const int N = 300 + 11 ;int dp[N][N][9][9] ;int n , m ;void init() {for(int i = 1 ; i <= n ; ++i) {for(int j = 1 ; j <= m ;++j) {scanf("%d" ,&dp[i][j][0][0]) ;}}int m1 , m2 , m3 , m4 ;for(int r = 0 ; (1<<r) <= n ; ++r) {for(int c = 0 ; (1<<c) <= m ; ++c) {if(r == 0 && c == 0) continue ;for(int i = 1 ; i+(1<<r)-1 <= n ; ++i) {for(int j = 1 ; j+(1<<c)-1 <= m ; ++j) {if(r) {dp[i][j][r][c] = max(dp[i][j][r-1][c] , dp[i+(1<<(r-1))][j][r-1][c]) ;}else {dp[i][j][r][c] = max(dp[i][j][r][c-1] , dp[i][j+(1<<(c-1))][r][c-1]) ;//先算当r为0的时候}}}}}}void query(int x1 , int y1 , int x2 , int y2) {int kx = (int)(log(x2 - x1 + 1.0)/log(2.0)) ;int ky = (int)(log(y2 - y1 + 1.0)/log(2.0)) ;//log2居然CEint m1 = dp[x1][y1][kx][ky] ;int m2 = dp[x2-(1<<kx)+1][y1][kx][ky] ;int m3 = dp[x1][y2-(1<<ky)+1][kx][ky] ;int m4 = dp[x2-(1<<kx)+1][y2-(1<<ky)+1][kx][ky] ;int tmp = max(m1 , max(m2 , max(m3 , m4))) ;//分为4个部分printf("%d ", tmp) ;//以上为二维RMQ模板if(dp[x1][y1][0][0] == tmp || dp[x1][y2][0][0] == tmp || dp[x2][y1][0][0] == tmp || dp[x2][y2][0][0] == tmp) {printf("yes\n") ;}else {printf("no\n") ;}}int main() {int a , b , c , d , q ;while(scanf("%d%d" ,&n ,&m)==2) {init() ;scanf("%d" , &q) ;while(q--) {scanf("%d%d%d%d" ,&a ,&b ,&c ,&d) ;query(a , b , c , d ) ;}}}
0 0
- HDU 2888 二维RMQ 模板
- hdu 2888 二维RMQ模板题
- HDU 2888 Check Corners 二维RMQ模板
- hdu 2888(二维RMQ)
- hdu 2888 二维rmq
- HDU 2888 (二维RMQ)
- hdu-2888 Check Corners(二维RMQ模板题)
- HDU 2888 Check Corners(二维RMQ模板)
- 二维RMQ模板
- 二维RMQ模板
- 【模板】二维rmq
- RMQ(二维模板)
- hdu 2888Check Corners 二维rmq
- hdu 2888 Check Corners(二维rmq)
- HDU 2888 Check Corners(简单二维RMQ)
- HDU 2888 Check Corners 二维RMQ
- hdu 2888 Check Corners(二维RMQ)
- 【二维RMQ】hdu 2888 Check Corners
- cocos2dx 3D战斗类游戏制作:【二】——3D运动模式小准备
- 在“信仰加成”平台上安装 Debian GNU/Linux 的问题
- 卷积神经网络
- 关于openSessionInViewFilter的几个小问题
- Hadoop2.2.0安装配置手册!完全分布式Hadoop集群搭建过程
- HDU 2888 二维RMQ 模板
- 正则表达式—-转义
- 播布客教学视频_C学习笔记_8.1_统计1到100中9的个数(分治)
- __try,__except,__finally,__leave异常模型机
- 播布客教学视频_C学习笔记_8.2_统计1到100中9的个数(函数)
- UI第一课
- 模板之泛化仿函数(一)
- Java获取get请求图片资源
- commons-lang 包,特殊字符处理 StringEscapeUtils