`
darren_nizna
  • 浏览: 72573 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

[ZJU/ZOJ][2859][Matrix Searching][二维fRMQ]

J# 
阅读更多
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))

int const N= 302;
int mat[N][N], n, q, pos[N];
int dMin[9][9][N][N];

void initRMQ(){
	int i, j, u, v, a, b, c, d;
	for( pos[0]= -1, i= 1; i<= n; ++i )
	pos[i]= ( ( i& (i- 1) )== 0 )? pos[i- 1]+ 1: pos[i- 1];
	
	for( i= 0; i<= pos[n]; ++i )
	for( j= 0; j<= pos[n]; ++j )
	for( u= 1; u<= n+ 1- (1<<i); u++ )
	for( v= 1; v<= n+ 1- (1<<j); v++ ){
		if( i== 0 && j== 0 ) continue;
		
		if( i== 0 ) dMin[i][j][u][v]= min( dMin[i][j- 1][u][v], dMin[i][j- 1][u][v+ (1<<(j- 1))] );
		else        dMin[i][j][u][v]= min( dMin[i- 1][j][u][v], dMin[i- 1][j][u+ (1<<(i- 1))][v] );
	}
}

int askRMQ( int x1, int y1, int x2, int y2 ){
	int x= pos[x2- x1+ 1], y= pos[y2- y1+ 1];
	
	int a= min( dMin[x][y][x1][y1], dMin[x][y][x2- (1<<x)+ 1][y1] );
	int b= min( dMin[x][y][x1][y2- (1<<y)+ 1], dMin[x][y][x2- (1<<x)+ 1][y2- (1<<y)+ 1] );
	
	return min(a,b);
	
}

int main(){
	int test;
	scanf("%d", &test );
	
	while( test-- ){
		scanf("%d",&n );
		
		for( int i= 1; i<= n; ++i )
		for( int j= 1; j<= n; ++j ){
			scanf("%d",  &mat[i][j] );
			dMin[0][0][i][j]= mat[i][j];
		}
		
		initRMQ();
		scanf("%d", &q );
		int x1, y1, x2, y2;
		for( int i= 0; i< q; ++i ){
			scanf("%d%d%d%d", &x1, &y1, &x2, &y2 );
			
			printf("%d\n", askRMQ( x1, y1, x2, y2 ) );
		}
	}
	
	return 0;
}

 

分享到:
评论

相关推荐

    ZJU/zoj 题库上的部分题源码

    【标题】"ZJU/zoj 题库上的部分题源码"涉及的知识点主要集中在ACM(国际大学生程序设计竞赛)编程领域,尤其是浙江大学(ZJU)ZOJ(Zhejiang University Online Judge)题库中的题目解决方案。ZOJ是一个在线编程评测...

    zoj 1140-zju 2433 简单题的部分答案

    标题 "zoj 1140-zju 2433 简单题的部分答案" 暗示了这是一个关于编程竞赛题目的解答集合,其中涵盖了ZOJ(浙江大学在线评测系统)上的两道题目——ZOJ 1140 和 ZJU 2433。这些题目可能属于算法或数据结构的范畴,...

    acm新手必备 浙大acm解答 代码库 zoj zju

    【标题】"acm新手必备 浙大acm解答 代码库 zoj zju" 提供的信息表明,这个压缩包包含的是ACM竞赛相关的代码,主要来自浙江大学(Zhejiang University,简称ZJU)的在线算法竞赛平台ZOJ(Zhejiang Online Judge)。...

    浙大zoj月赛解题报告及代码

    同时,“浙大 zoj zju acm初学者必备 代码”指出这是一份适合初学者的学习资料,其中的代码实例能够帮助他们熟悉ACM竞赛的编程实践,了解如何在ZOJ平台上进行有效的编程和调试。 【标签】进一步强调了资源的主要...

    zju700代码 浙大oj代码

    【标题】"zju700代码 浙大oj代码" 涉及的主要知识点是浙江大学(Zhejiang University,简称ZJU)在线评测系统ZOJ(Zhejiang Online Judge)中的编程题目解决方案。ZOJ是为ACM/ICPC(国际大学生程序设计竞赛)训练而...

    rEFInd-ZJU:浙江大学学生的reEFInd主题

    要为您的条目设置图标,您需要将图标配置添加到每个菜单条目,这些菜单条目指向您希望用于该条目的rEFInd-ZJU/icons下的rEFInd-ZJU/icons 。 这是一个示例配置。 menuentry "Ubuntu" { loader /EFI/ubuntu/...

    zoj.gz_ ZOJ_ZOJ 1016_max flow_zoj 1045_zoj.rar

    标题中的"ZOJ.gz_ ZOJ_ZOJ 1016_max flow_zoj 1045_zoj.rar" 提到了两个ZOJ(Zhejiang Online Judge)的题目,分别是1016和1045,这两个数字通常代表在线编程竞赛中的题目编号。这些题目通常涉及到算法和数据结构的...

    zoj 分类加题解(浙大ACM)

    《ZOJ ACM分类加题解》是针对浙江大学ACM竞赛训练平台的一份宝贵资源,它包含了大量的编程竞赛题目和相应的解答。这份资料旨在帮助参赛者提升算法能力,提高解决实际问题的技巧,无论是在无网络环境下还是有网络时,...

    zju.rar_ZJU_zju.rar_zju2104.cpp

    【标题】"zju.rar_ZJU_zju.rar_zju2104.cpp" 提供的信息显示,这可能是一个与浙江大学(Zhejiang University,简称ZJU)相关的编程资源包。"zju2104.cpp" 文件名暗示这可能是针对浙大某次课程或竞赛的C++代码,编号...

    zju1001-1399的数据

    标题“zju1001-1399的数据”暗示了这是一系列与浙江大学(Zhejiang University,简称ZJU)相关的编程题目或测试数据。这些数据可能被用于计算机科学竞赛、在线判题系统(如POJ、ZOJ等)或者是浙江大学计算机课程的...

    zoj1090解题报道

    ### ZOJ1090 解题报道 #### 题目概述 题目编号为ZJU1090的问题,主要涉及计算几何中的海伦公式及其应用。本题要求根据给定的三个顶点坐标计算一个三角形的外接圆周长。 #### 海伦公式简介 海伦公式(Heron's ...

    九度1006ZOJ问题

    ZJU考研机试真题 九度1006ZOJ问题

    zju动态规划试题选集

    - **0-1背包问题**:给定物品的重量和价值,决定哪些物品放入容量有限的背包中以最大化价值,通常采用动态规划的二维数组解决方案。 - **最长公共子序列**:寻找两个字符串的最长子序列,不考虑子序列的顺序,可以...

    zoj_ac.rar_zoj_zoj 1023_zoj 2792_zoj21_zoj2182

    最近在acm.zju.edu.cn上通过的题目的代码,都是比较有价值的题目

    zju.rar_zju 31_zju2104.cpp

    【标题】"zju.rar_zju 31_zju2104.cpp" 指的是一个压缩包文件,其中包含了解决浙江大学(zju.edu.cn)在线编程平台上的问题的C++源代码。这个文件可能是一个参赛者或学习者提交的解决方案,用于处理特定的算法或编程...

    zju1025.rar_ZJU_acm zju 10_pid_sticks_zju 1025

    【标题】"ZJU1025 Wooden Sticks" 是浙江大学(Zhejiang University,简称ZJU)在线编程竞赛平台ACM上的一道题目,编号为1025。这道题目主要考察参赛者的算法设计和实现能力,属于计算机科学中的经典问题。 【描述...

    zju1048.rar_acm.zju.edu._pid_show_zju acm

    【标题】"zju1048.rar_acm.zju.edu._pid_show_zju acm" 指向的是一个与浙江大学(Zhejiang University,简称ZJU) ACM竞赛相关的压缩文件,其中包含了对问题1048 "Financial Management"的解答。"acm.zju.edu." 和 ...

    zju_ACM 习题详解

    ZOJ(Zhejiang University Online Judge)是浙江大学的一个在线评测系统,为ACM程序设计竞赛提供了大量的训练题目和比赛环境。ZOJ不仅面向浙江大学的学生,也对外开放,吸引了全球众多程序员参与。 ### 题目详解 #...

    ZJU OS slide 2

    根据提供的文件信息,这份文档是浙江大学操作系统课程的讲义,属于第2章的内容,教材则是被称为“操作系统的恐龙书”的资料。该讲义涉及的主题包括操作系统服务、用户操作系统界面、系统调用、系统程序、操作系统...

    Zoj acm的AC解题报告

    【标题】"Zoj ACM的AC解题报告"揭示了关于在线判题系统ZOJ(Zhejiang University Online Judge)以及ACM(国际大学生程序设计竞赛)的相关知识。ZOJ是中国浙江大学主办的一个在线编程竞赛平台,它为参赛者提供了一个...

Global site tag (gtag.js) - Google Analytics