// =====================================================================================
//
// Filename: zoj2859.cpp
//
// Description: 2D RMQ -- Orz...卡了输出...
//
// Version: 1.0
// Created: 2012年03月02日 22时17分57秒
// Revision: none
// Compiler: g++
//
// Author: SphinX (Whisper), sphinx2010@yahoo.cn
// Company: HFUT
//
// =====================================================================================
#include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;
const int MAXN = 302;
const int MAXK = 9;
int test, n, m;
int mtx[MAXN][MAXN], dp[MAXN][MAXN][MAXK][MAXK];
int pow_hash[MAXK], log_hash[MAXN];
void preproces()
{
log_hash[0] = 0;
log_hash[1] = 0;
for (int ind = 2, k = 1; ind < MAXN; ++ind)
{
if ((1 << (k + 1)) <= ind)
{
++k;
}
log_hash[ind] = k;
}
for (int k = 0; (1 << k) < MAXN; ++k)
{
pow_hash[k] = (1 << k);
}
return ;
}
void initRMQ()
{
int k = log_hash[n];
for (int row = 0; row < n; ++row)
{
for (int col = 0; col < n; ++col)
{
dp[row][col][0][0] = mtx[row][col];
}
}
for (int i = 0; i <= k; ++i)
{
for (int j = 0; j <= k; ++j)
{
if (0 == i && 0 == j)
{
continue ;
}
for (int row = 0; row + pow_hash[i] <= n; ++row)
{
for (int col = 0; col + pow_hash[j] <= n; ++col)
{
if (0 == i)
{
dp[row][col][i][j] =
min(dp[row][col][i][j - 1], dp[row][col + pow_hash[j - 1]][i][j - 1]);
}
else
{
dp[row][col][i][j] =
min(dp[row][col][i - 1][j], dp[row + pow_hash[i - 1]][col][i - 1][j]);
}
}
}
}
}
return ;
}
int queryRMQ(int r1, int c1, int r2, int c2)
{
int kr = log_hash[r2 - r1 + 1];
int kc = log_hash[c2 - c1 + 1];
return min(
min(dp[r1][c1][kr][kc], dp[r2 - pow_hash[kr] + 1][c2 - pow_hash[kc] + 1][kr][kc]),
min(dp[r2 - pow_hash[kr] + 1][c1][kr][kc], dp[r1][c2 - pow_hash[kc] + 1][kr][kc])
);
}
void ace()
{
int cas = 1;
int r1, c1, r2, c2;
preproces();
for (scanf("%d", &test); test--; ++cas)
{
scanf("%d", &n);
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < n; ++j)
{
scanf("%d", &mtx[i][j]);
}
}
initRMQ();
scanf("%d", &m);
while (m--)
{
scanf("%d %d %d %d", &r1, &c1, &r2, &c2);
printf("%d\n", queryRMQ(r1 - 1, c1 - 1, r2 - 1, c2 - 1));
}
}
return ;
}
int main(int argc, char *argv[])
{
ace();
return EXIT_SUCCESS;
}相关推荐
一文说清STM32CubeMX中文汉化全流程(图解说明)
详细讲解STM32CubeMX中文汉化的完整流程,通过图文并茂的方式手把手教学,解决界面英文带来的使用障碍,让开发更高效。掌握stm32cubemx中文汉化技巧,提升嵌入式开发体验。
zoj 2859(二维RMQ)
Matrix Searching Time Limit: 10 Seconds Memory Limit: 32768 KB Given an n*n matrix A, whose entries Ai,j are integer numbers ( 1
【Xilinx】如何在petalinux下编译vcu-gst-app以及独立编译vcu-gst-app
Xilinx从2018.1开始,提供了一套基于zcu106的vcu参考设计。里面提供了一套基于GStreamer的程序,即vcu-gst-app。如何脱离petalinux直接编译呢,这里以为例,其他版本也是类似的操作。
二维rmq zoj2859
/*zoj2859题意:给定一个n*n(n 二维RMQdp[row][col][i][j] 表示[row,row+2^i-1]x[col,col+2^j-1] 二维区间内的最小值. == min( [row,row+ 2^(i-1)-1]x[col,col+2^j-1], [ro
DNF单机版搭建全攻略:从零开始到局域网联机(含常见问题解决)
本文提供详细的DNF单机版搭建指南,从环境配置到局域网联机设置,涵盖服务端安装、数据库配置及常见问题解决方案。适合新手和有经验的玩家,帮助快速搭建专属游戏服务器,重温经典游戏体验。
gsplat在windows本地部署
3DGS的cuda提效和优化内存的版本gsplat,使得在有一定GPU计算能力的电脑上也能够尝尝3DGS的效果。我在2025年的开年之初尝试配置过gsplat,由于过程中遇到很多问题,最终还是有一些windows上字符编码的问题,没有跑通,最近看gsplat的github更新了3DGUT,优化了反射和二次折射,以及适用于非线性相机模型,如鱼眼相机等。在data目录下下载好了360_v2的数据,进入之后images文件夹是原始分辨率的图像,images_2是下采样系数为2的数据,以此类推。
ZOJ2859-----二维的RMQ
题目地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2859 题目意思: 给你一个矩阵,求出子矩阵中的最小元素 解题思路: 之前用二维的线段树做过,但是查询时间是O(logn*logn) 现在用二维RMQ的话,可以把查询时间做到O(1) 它的预处理时间是O(n*n*logn*logn) 代码: #inc
fpga在线升级 linux_仅5000行Verilog代码、可在FPGA上跑轻量级Linux系统的RISC-V内核
本文发布于www.hackster.io,由东京理工大学的计算机学院开发,专用于教学与加速用(苏老师也一直认为这是RISC-V当前的主要方向)。目前市场上开源的RISC-V内核已经很多,但很少有公开的RISC-V计算系统是非常轻型且能跑Linux系统的。这一款RISC-V内核就可以运行在FPGA上,用Verilog编写的,需要很少硬件的资源就能跑起来,所以可以运行在一个低成本的FPGA上。来看一下...
ZOJ 2859 二维RMQ 二维线段树(树套树)
裸裸的二维RMQ,先用二维线段树写了一个; 对于一个二维线段树(树套树),第一维下的每一个节点套着一颗树,而且套的每一树的形态都是一样的(就是该树的每一节点的长度的都是一样的),利用这点就可做到第一维套的树可以从它的子节点所套的树更新,当然若没有子节点,那么从它的第二维自己更新自己,这里说的更新是更新该节点所包含范围内的最小值; 实现: 1,在建树的时候,建一个N 2,当为线段树第一维叶子
MacOS上VScode配置PlatformIO Core的疑难杂症与提速实战
本文详细解析了在MacOS上使用VScode配置PlatformIO Core时遇到的安装卡死、新建项目缓慢等常见问题,并提供了官方脚本安装、网络优化、命令行预下载等实用解决方案。通过环境变量配置和镜像源加速,大幅提升开发效率,特别适合ESP32等嵌入式开发场景。
48、住宅抵押贷款支持证券的定价、风险评估与结构化设计
本文深入探讨了住宅抵押贷款支持证券(RMBS)的定价、风险评估与结构化设计。内容涵盖提高定价准确性的方差缩减方法,如准蒙特卡罗序列的应用;分析RMBS面临的利率风险、信用风险和模型风险,并提出相应的度量与应对策略;介绍利用动态规划优化CMO分层结构以最大化发行利润的方法。同时总结了RMBS的基本类型、定价流程及市场发展趋势,为投资者和发行人提供全面的决策支持。
ZOJ2859 Matrix Searching 二维RMQ问题
二维RMQ问题。 #include #include #include #include using namespace std; int f[302][302][9][9]; int num[302][302]; int n; void init_RMQ() { int i,j,r,c; for(i=1;i<=n;i++) for(j=1;j<=n;j+
【异常】XXL-job触发调度:address:http://192.168.x.x:x/ code:500 msg:xxl-rpc remoting error(connect timed out)
XXL-JOB调度任务失败分析:调度中心(10.254.234.80)与执行器(192.168.x.x)连接超时,返回500错误。主要原因是网络不通或执行器异常:1.网络不通可能由防火墙或网段隔离导致;2.执行器未启动或端口未监听;3.地址配置错误。解决方案:1.关闭代理使用内网;2.测试网络连通性和端口可用性;3.检查执行器进程状态和端口监听情况;4.核对执行器地址配置;5.必要时配置防火墙规则放行端口。
ZOJ 2859 Matrix Searching 二维rmq
二维的rmq 和一维的rmq 其实非常相似,我们定义 dp[r][c][i][j] 为 覆盖了 r行c列 到 r+2^i-1行 c+2^j-1列的 标记值(如最大最小)。 dp转移就很容易了: 当i为0 ,j为0 的时候就是 数组[r][c]的值, 当i= 0 ,就j不为0的时候,就和一维的rmq一样,此时即对第一行求rmq; 我们只看二维rmq的行,那么二维rmq 也变成了一维
廖雪峰Python教程[完整版]
廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白
ET2012新版免狗免安装绿色软件
ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,
ZOJ 2859 二维RMQ(模板)
这题求范围最小值,RMQ正好是用来解决这方面的,所以再适合不过了,又是离线静态输入输出的,所以时间比二维线段树快。 #include #include #include #include #include #include #include #include #include #define mem(a,b) memset(a,b,sizeof(a)) #define lson i<<1,l,m
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
ZOJ 2859 Matrix Searching 二维线段树 || 二维RMQ
题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1859题意:给定一个n*n的矩阵,有m个询问, 每个询问给出一个子矩阵的左上角和右下角坐标,问这个子矩阵内的最小值。思路:用二维线段树和二维RMQ都可以,没什么好说的。另外这个题数据少时限长,直接建n棵线段树都可以轻松水过,更暴力的方法也许也能过,大力出奇迹 二维线段树:#
ssm框架搭建
这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载
ZOJ 2859 Matrix Searching(二维RMQ)
二维的相当于先求出每一行i的每一列j开始到j+2^j-1最值,然后求各个行和列之间的最值 #include #include #include #include using namespace std; #define mmin(a,b) (a)<(b)?(a):(b); const int maxn=310; int dp[maxn][maxn][9][9],grid[maxn][
ZOJ 题目2859 Matrix Searching(二维RMQ)
Matrix Searching Time Limit: 10 Seconds Memory Limit: 32768 KB Given an n*n matrix A, whose entries Ai,j are integer numbers ( 1 <= i <= n, 1 <= j <= n ). An operation FI...
二维RMQ(Range Minimum Query)
二维RMQ(Range Minimum Query)先来看一维情形:给定一个数组x以及大量的查询,查询内容是任意区间内的最小值,例如数组长度为n,则查询为从x[a]到x[b]中的最小值,0问题是如何进行预处理,使得每次查询时间为O(1)。解法:计算出所有长度为2^i的区间的最小值,则任[a,b]区间可以拆为两个长度为2^i的区间的并集,i=log(b-a)。例如查询1到100间的最小值,[
[总结] 二维ST表及其优化
二维 \(\mathcal{ST}\) 表,可以解决二维 \(\mathcal{RMQ}\) 问题。这里不能带修改,如果要修改,就需要二维线段树解决了。 上一道例题吧 ZOJ2859 类比一维 \(\mathcal{ST}\) 表,我们定义数组 \(f[i][j][k][p]\) 表示从 \((i,j)\) 往下 \(2^k\) 个元素,往右 \(2^p\) 个元素的最值。 建表的话,同样类比一维...
zoj 3614 二维RMQ
链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4738 题意:给你一个 n * m 的矩阵,然后有Q次询问,求一个a * b 的 子矩阵,使其方差最小(去掉子矩阵的最大值以后) 分析:n 和 m 的范围是 0 - 300,q 最大为100,枚举的话是10 ^ 6,这就要求我们在O(1) - O(n^2) 内求出子矩
zoj2859
第一种算法 rmq 参考http://blog.sina.com.cn/s/blog_88705ca20100ufl2.html #include #include #include #include #include #include #define MAX 301 using namespace std; int dp[MAX][MAX][9][9]; int matrix[MAX][M
【模板】zoj2859_二维st表
#include &lt;cstdio&gt; #include &lt;algorithm&gt; #include &lt;cmath&gt; using namespace std; int stmin[301][301][9][9]; int n;//n行n列 int q; void init_st(int n) { int i, j, k1, k2; for(k1...
[ZJU/ZOJ][2859][Matrix Searching][二维fRMQ]
#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...
6278



被折叠的 条评论
为什么被折叠?



