poj--2019 Cornfields 2维RMQ

题目大意: 给定一个 N*N 的数组   求以(x1, y1) 为左上角  (x1 + b -1 ,y1 + b -1)为右下角 这个b*b的范围内最大值减最小值

看到最大值最小值当然想到RMQ啦

View Code
//Accepted    27392K    594MS    C++    2416B
#include <iostream>
#include <stdio.h>
#include <cmath>
using namespace std;
const int maxn = 301;
int N;
int val[maxn][maxn];
int st_min[maxn][maxn][9][9];
int st_max[maxn][maxn][9][9];
inline int minn(int a,int b){ return a>b?b:a; }
inline int maxx(int a,int b){ return a>b?a:b; }
void RMQ_2D_PRE()
{for(int row = 1; row <= N; row++)for(int col = 1; col<=N; col++){st_min[row][col][0][0] = val[row][col];st_max[row][col][0][0] = val[row][col];}int m = log(double(N)) / log(2.0);for(int i=0; i<=m; i++)for(int j=0; j<=m; j++){if(i == 0 && j==0)continue;for(int row = 1; row+(1<<i)-1 <= N; row++)for(int col = 1; col+(1<<j)-1 <= N; col++){if(i == 0){st_min[row][col][i][j] = minn(st_min[row][col][i][j-1] , st_min[row][col+(1<<(j-1))][i][j-1]);  //水平划分st_max[row][col][i][j] = maxx(st_max[row][col][i][j-1] , st_max[row][col+(1<<(j-1))][i][j-1]);  //水平划分
                        }else{st_min[row][col][i][j] = minn(st_min[row][col][i-1][j] , st_min[row+(1<<(i-1))][col][i-1][j]);    //竖直划分st_max[row][col][i][j] = maxx(st_max[row][col][i-1][j] , st_max[row+(1<<(i-1))][col][i-1][j]);    //竖直划分
                        }}}
}
int RMQ_2D_min(int x1,int x2,int y1,int y2)
{int kx = log(double(x2 - x1 +1)) / log(2.0);int ky = log(double(y2 - y1 +1)) / log(2.0);int m1 = st_min[x1][y1][kx][ky];int m2 = st_min[x2-(1<<kx)+1][y1][kx][ky];int m3 = st_min[x1][y2-(1<<ky)+1][kx][ky];int m4 = st_min[x2-(1<<kx)+1][y2-(1<<ky)+1][kx][ky];return minn( minn(m1,m2), minn(m3,m4) );}
int RMQ_2D_max(int x1,int x2,int y1,int y2)
{int kx = log(double(x2 - x1 +1)) / log(2.0);int ky = log(double(y2 - y1 +1)) / log(2.0);int m1 = st_max[x1][y1][kx][ky];int m2 = st_max[x2-(1<<kx)+1][y1][kx][ky];int m3 = st_max[x1][y2-(1<<ky)+1][kx][ky];int m4 = st_max[x2-(1<<kx)+1][y2-(1<<ky)+1][kx][ky];return maxx( maxx(m1,m2), maxx(m3,m4) );}
int main(void)
{int M,B;int x1,y1;while(scanf("%d%d%d",&N,&B,&M)!=EOF){    for(int i=1; i<=N; i++)for(int j=1; j<=N; j++)scanf("%d",&val[i][j]);            RMQ_2D_PRE();                    while(M--){scanf("%d%d",&x1,&y1);            printf("%d\n",RMQ_2D_max(x1,x1+B-1,y1,y1+B-1)-RMQ_2D_min(x1,x1+B-1,y1,y1+B-1));}}return 0;
}

转载于:https://www.cnblogs.com/asen32/archive/2012/08/22/2651495.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296700.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NET问答: 如何检查一个 string 是否为有效的 url 格式?

咨询区 kenchilada&#xff1a;我发现 framework 里有两个验证url有效性的方法&#xff1a;Uri.IsWellFormedUriString 和 Uri.TryCreate &#xff0c;我试了一下这两个方法在验证 文件路径 时都返回 true。请问我有什么有效的方法可以验证某个 string 是否为有效的 HTTP URL 格…

svn命令在linux下的使用

1、将文件checkout到本地目录 引用svn checkout path&#xff08;path是服务器上的目录&#xff09; 例如&#xff1a;svn checkout svn://192.168.1.1/pro/domain 简写&#xff1a;svn co2、往版本库中添加新的文件 引用svn add file 例如&#xff1a;svn add test.php(添加te…

学生渐进片add如何给_渐进镜片的说明与镜架选择

近年来&#xff0c;许多眼镜店都进行了渐进多焦点镜片(下面简称&#xff1a;渐进镜片)的推广与应用&#xff0c;产品也越来越普及&#xff0c;但由于很多眼镜店并没有对从业人员进行系统培训&#xff0c;同时对渐进镜片的了解又甚少&#xff0c;在一些注意事项上经验不足&#…

html5 svg组态图,绘制SVG内容到Canvas的HTML5应用

SVG与Canvas是HTML5上绘制图形应用的两种完全不同模式的技术&#xff0c;两种绘制图形方式各有优缺点&#xff0c;但两者并非水火不容&#xff0c;尤其是SVG内容可直接绘制在Canvas上的功能&#xff0c;使得两者可以完美的融合在一起&#xff0c;让Canvas可享用到现有丰富的SVG…

天哪!男朋友对大姨妈的误解有多深?

1 大姨妈就是随时随地给你一拳那种▼2 怀疑不是袜子太紧而是腿太粗▼3 画面戛然而止希望小姑娘她妈下手轻点▼4 大家都是艺术生▼5 “你妈式”量体温▼6 当代网友上网冲浪的最大阻碍▼7 给你个眼神你自己体会~▼你点的每个赞&#xff0c;我都认真当成了喜欢

[转]经典SQL语句大全

一、基础 1、说明&#xff1a;创建数据库 CREATE DATABASE database-name 2、说明&#xff1a;删除数据库 drop database dbname 3、说明&#xff1a;备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice disk, testBack, c:\mssql7backup\MyNwind_1.…

TreeSet集合中的自定义比较器

import java.util.Comparator; import java.util.TreeSet; /* 当treeset集合中的元素不具备比较功能&#xff0c;或者具备的比较功能不是所需要的 例如person对象中的自然排序是按照年龄进行排序的&#xff0c;但现在的需求是按照姓名进行排序&#xff0c;改源代码的方式不可…

python34怎么安装_简明Python3教程 4.安装

如果你已经安装了Python 2.x&#xff0c;你不需要在安装Python 3.0前卸载Python 2.x。这两者可以共存。GNU/Linux用户和BSD用户如果你使用类似于Ubuntu、Fedora、OpenSUSE、Debian、CentOS或其他你选择的GNU/Linux发行版&#xff0c;或类似于FreeBSD的BSD系统&#xff0c;你的系…

Dapr + .NET 实战(十四)虚拟机集群部署 mDNS + Consul

前面我们说了在单机模式下和K8S集群下的Dapr实战&#xff0c;这次我们来看看如何在不使用K8S的情况下&#xff0c;在一个传统的虚拟机集群里来部署Dapr。1.环境准备我们准备两台centos7虚拟机Dapr1&#xff1a;192.168.43.131Dapr2&#xff1a;192.168.43.1322.Dapr CLI安装分别…

哪个男孩不想拥有这种牌面?

1 全国最嗨的烧烤地摊没有之一▼2 为什么我们的雨刷和别人的不一样&#xff1f;▼3 好羡慕有这样的妈妈▼4 猫&#xff1a;你别进来&#xff0c;我这儿不接待小孩儿&#xff01;孩子&#xff1a;我就进去看看▼5 像极了我考试的样子▼6 今天教大家一个找钻石的好办法▼7 …

有意思的记录-shell(持续更新)

1.统计重复行的个数 sort uid.txt | uniq -c 2.查看压缩文件 cat *.gz | gunzip > 123 3.查看2个文件的交集、差集 comm用于比较两个有序文件&#xff0c;默认第一列为第一个文件独有的元素&#xff0c;第二列为第二个文件独有的元素&#xff0c;第三列为共有元素&#xff0…

html怎么快速打出来的,javascript – 快速打印HTML5画布

我搜索了很多,找到了一个完美的解决方案:)使用onclick事件function printCanvas(){var dataUrl document.getElementById(anycanvas).toDataURL(); //attempt to save base64 string to server using this varvar windowContent ;windowContent windowContent Print canvas…

OutOfMemoryException异常解析

一、概述在国庆休假快结束的最后一天晚上接到了部门老大的电话&#xff0c;某省的服务会出现崩溃问题。需要赶紧修复&#xff0c;没错这次的主角依旧是上次的“远古项目”没有办法同事都在休假没有人能帮忙开电脑远程只能打车去公司。远程链接上服务器之后查看日志发现抛出的堆…

LeetCode:Largest Number - 求整型数组中各元素可拼合成的最大数字

2019独角兽企业重金招聘Python工程师标准>>> 1、题目名称 Largest Number&#xff08;求整型数组中各元素可拼合成的最大数字&#xff09; 2、题目地址 https://leetcode.com/problems/largest-number/ 3、题目内容 英文&#xff1a;Given a list of non negative i…

js实现样式切换

2019独角兽企业重金招聘Python工程师标准>>> <ul id"styles"> <li id"default">经典</li> <li id"blue">淡蓝</li> <li id"brown">棕色</li> </ul> $("#styles li&…

CV算法面试题学习

本文记录了CV算法题的学习。 CV算法面试题学习 1 点在多边形内&#xff08;point in polygon&#xff09;2 高斯滤波器3 ViTPatch EmbeddingPosition EmbeddingTransformer Encoder完整的ViT模型 4 SE模块5 Dense Block6 Batch Normalization 1 点在多边形内&#xff08;point …

tinyid 教程_tinyid

软件简介tinyid 是滴滴开发的 id 生成器 分布式id生成系统&#xff0c;简单易用、高性能、高可用的id生成系统。提供的 REST API&#xff1a;nextId:curl http://localhost:9999/tinyid/id/nextId?bizTypetest&token0f673adf80504e2eaa552f5d791b644cresponse:{"data…

【推荐软件】wingrep

linux下搜索文本中的字符串时&#xff0c;习惯了find和grep的结合&#xff0c;很强大&#xff0c;但是windows下没有这两个命令&#xff0c;不用IDE编程时搜索略显不便。google一下&#xff0c;原来有wingrep工具可以用&#xff0c;可以实现相同的功能&#xff0c;来推荐一下给…

flash如何转html5,闪客精灵如何将Flash格式转换成HTML5

如何将Flash格式转换成HTML5?闪客精灵就是为Flash格式转换为HTML5而生的&#xff0c;他能够快速的将任何Flash文件&#xff0c;不管是SWF还是EXE格式的Flash格式转换成能被HTML5识别的HTML格式的文件。那么如何用闪客精灵将Flash格式转换为HTML5呢?下面是关于闪客精灵将Flash…

一壶 100℃ 的开水从多高倒进嘴里不会觉得烫?

全世界只有3.14 % 的人关注了爆炸吧知识先说结论&#xff1a;大约50米左右。 水从高空落下&#xff0c;先倒的水快&#xff0c;后倒的水慢&#xff0c;所以必然很快撕裂&#xff0c;成为细小的水滴。因此&#xff0c;这里就只讨论水滴的散热问题&#xff0c;而不考虑一大团水的…