二维RMQ。

 /* 2888 */
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std; #define MAXN 305
#define MAXM 9 int bit[MAXN];
int dp[MAXN][MAXN][MAXM][MAXM];
int n, m; void RMQ_init() {
int i, j, k;
int ii, jj; for (i=; i<=n; ++i)
for (j=; j<=m; ++j)
scanf("%d", &dp[i][j][][]);
for (ii=; (<<ii)<=n; ++ii) {
for (jj=; (<<jj)<=m; ++jj) {
if (ii== && jj==)
continue;
for (i=; i+(<<ii)-<=n; ++i) {
for (j=; j+(<<jj)-<=m; ++j) {
if (ii)
dp[i][j][ii][jj] = max(dp[i][j][ii-][jj], dp[i+(<<(ii-))][j][ii-][jj]);
else
dp[i][j][ii][jj] = max(dp[i][j][ii][jj-], dp[i][j+(<<(jj-))][ii][jj-]);
}
}
}
}
} int RMQ(int lx, int ly, int rx, int ry) {
int kx = , ky = ; while ((<<(kx+)) <= (rx-lx+))
++kx;
while ((<<(ky+)) <= (ry-ly+))
++ky;
return max(
max(dp[lx][ly][kx][ky], dp[rx-(<<kx)+][ly][kx][ky]),
max(dp[lx][ry-(<<ky)+][kx][ky], dp[rx-(<<kx)+][ry-(<<ky)+][kx][ky])
);
} int main() {
int i, j, k;
int r1, c1, r2, c2; #ifndef ONLINE_JUDGE
freopen("data.in", "r", stdin);
freopen("data.out", "w", stdout);
#endif while (scanf("%d %d", &n, &m)!=EOF) {
RMQ_init();
scanf("%d", &j);
while (j--) {
scanf("%d %d %d %d", &r1, &c1, &r2, &c2);
if (r1 > r2) swap(r1, r2);
if (c1 > c2) swap(c1, c2);
k = RMQ(r1, c1, r2, c2);
if (k==dp[r1][c1][][] || k==dp[r1][c2][][] || k==dp[r2][c1][][] || k==dp[r2][c2][][])
printf("%d yes\n", k);
else
printf("%d no\n", k);
}
} return ;
}

【HDOJ】2888 Check Corners的更多相关文章

  1. Hdu 2888 Check Corners (二维RMQ (ST))

    题目链接: Hdu 2888 Check Corners 题目描述: 给出一个n*m的矩阵,问以(r1,c1)为左上角,(r2,c2)为右下角的子矩阵中最大的元素值是否为子矩阵的顶点? 解题思路: 二 ...

  2. 【LeetCode】1150. Check If a Number Is Majority Element in a Sorted Array 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典 二分查找 日期 题目地址:https://lee ...

  3. HDU 2888 Check Corners (模板题)【二维RMQ】

    <题目链接> <转载于 >>> > 题目大意: 给出一个N*M的矩阵,并且给出该矩阵上每个点对应的值,再进行Q次询问,每次询问给出代询问子矩阵的左上顶点和右下 ...

  4. 【HDOJ】4729 An Easy Problem for Elfness

    其实是求树上的路径间的数据第K大的题目.果断主席树 + LCA.初始流量是这条路径上的最小值.若a<=b,显然直接为s->t建立pipe可以使流量最优:否则,对[0, 10**4]二分得到 ...

  5. 【HDOJ】【3555】Bomb

    数位DP cxlove基础数位DP第二题 与上题基本相同(其实除了变成long long以外其实更简单了……) //HDOJ 3555 #include<cmath> #include&l ...

  6. 【HDOJ】4605 Magic Ball Game

    思路1:树状数组+离线处理,对所有的w离散化处理,边dfs边使用树状数组更新左右w的情况.思路2:主席树,边bfs边建树.结点信息存储cnt,然后在线查询.树状数组. /* 4605 */ #incl ...

  7. 【HDOJ】1987 Decoding

    简单搜索. /* hdoj 1987 */ #include <iostream> #include <cstdio> #include <cstring> #in ...

  8. 【Dll】Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call

    [问题说明]调试动态库导出的函数时遇到的问题 [解决方法]要么加上__stdcall,对应__stdcall:要么去掉__stdcall,对应_cdecl

  9. 【HDOJ】【3506】Monkey Party

    DP/四边形不等式 裸题环形石子合并…… 拆环为链即可 //HDOJ 3506 #include<cmath> #include<vector> #include<cst ...

随机推荐

  1. Ubuntu16.04下Intellij IDEA不能输入中文的问题

    最近Ubuntu升级到16.04后发现IDEA的中文输入法不能正常切换了. 之前用的是fcitx安装的输入法, 折腾了半天才解决. 只需要修改idea.sh文件即可. 不需要折腾fcitx中的配置. ...

  2. boost.log要点笔记

    span.kw { color: #007020; font-weight: bold; } code > span.dt { color: #902000; } code > span. ...

  3. 常见sql语句及复杂sql语句记录

    1 将A表中的部分字段和B表中的部分字段作为C表的字段 SELECT a.name,b.age   FROM  (SELECT * from A) as a,(SELECT * from B) as ...

  4. 单点登录SSO原理

    最近接触了一点单点登录的知识,有一点理解,记录一下.有些问题并没有找到完美的解决方法,还需要找点已有框架来看看. 欢迎留言探讨. 1       概念 1.1     概念及理解 有一个网上广为流传的 ...

  5. WisDom.Net 框架设计(六) license

    WisDom.Net-license 1.为啥要用license    license (许可证) 顾名思义就是说我的软件只能给在指定的机器上使用.毕竟很多项目都不是免费的,(说句题外话,其实我用的也 ...

  6. c# HttpWebRequest与HttpWebResponse 绝技(转载)

    c# HttpWebRequest与HttpWebResponse 绝技    如果你想做一些,抓取,或者是自动获取的功能,那么就跟我一起来学习一下Http请求吧.本文章会对Http请求时的Get和P ...

  7. .NET平台下几种SOCKET模型的简要性能供参考

    转载自:http://www.cnblogs.com/asilas/archive/2006/01/05/311309.html .NET平台下几种SOCKET模型的简要性能供参考 这个内容在cnbl ...

  8. NFC手机

    NFC手机 NFC手机内置NFC芯片,比原先仅作为标签使用的RFID更增加了数据双向传送的功能,这个进步使得其更加适合用于电子货币支付:特别是RFID所不能实现的,相互认证和动态加密以及一次性钥匙(O ...

  9. myeclipse10 中修改html,servlet,jsp等的生成模板

    1.进入myeclipse的安装目录 2.用减压软件,(如winrar)打开common\plugins\com.genuitec.eclipse.wizards_9.0.0.me2011080913 ...

  10. jQuery 遍历过滤

    缩写搜索元素的范围 三个最基本的过滤方法是:first(), last() 和 eq(),它们允许您基于其在一组元素中的位置来选择一个特定的元素. 其他过滤方法,比如 filter() 和 not() ...