【HDOJ】2888 Check Corners
二维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的更多相关文章
- Hdu 2888 Check Corners (二维RMQ (ST))
题目链接: Hdu 2888 Check Corners 题目描述: 给出一个n*m的矩阵,问以(r1,c1)为左上角,(r2,c2)为右下角的子矩阵中最大的元素值是否为子矩阵的顶点? 解题思路: 二 ...
- 【LeetCode】1150. Check If a Number Is Majority Element in a Sorted Array 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典 二分查找 日期 题目地址:https://lee ...
- HDU 2888 Check Corners (模板题)【二维RMQ】
<题目链接> <转载于 >>> > 题目大意: 给出一个N*M的矩阵,并且给出该矩阵上每个点对应的值,再进行Q次询问,每次询问给出代询问子矩阵的左上顶点和右下 ...
- 【HDOJ】4729 An Easy Problem for Elfness
其实是求树上的路径间的数据第K大的题目.果断主席树 + LCA.初始流量是这条路径上的最小值.若a<=b,显然直接为s->t建立pipe可以使流量最优:否则,对[0, 10**4]二分得到 ...
- 【HDOJ】【3555】Bomb
数位DP cxlove基础数位DP第二题 与上题基本相同(其实除了变成long long以外其实更简单了……) //HDOJ 3555 #include<cmath> #include&l ...
- 【HDOJ】4605 Magic Ball Game
思路1:树状数组+离线处理,对所有的w离散化处理,边dfs边使用树状数组更新左右w的情况.思路2:主席树,边bfs边建树.结点信息存储cnt,然后在线查询.树状数组. /* 4605 */ #incl ...
- 【HDOJ】1987 Decoding
简单搜索. /* hdoj 1987 */ #include <iostream> #include <cstdio> #include <cstring> #in ...
- 【Dll】Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call
[问题说明]调试动态库导出的函数时遇到的问题 [解决方法]要么加上__stdcall,对应__stdcall:要么去掉__stdcall,对应_cdecl
- 【HDOJ】【3506】Monkey Party
DP/四边形不等式 裸题环形石子合并…… 拆环为链即可 //HDOJ 3506 #include<cmath> #include<vector> #include<cst ...
随机推荐
- Grant-Permission.ps1
Grant-Permission.ps1 Download the EXE version of SetACL 3.0.6 for 32-bit and 64-bit Windows. Put set ...
- 码表 Unicode GBK UTF8 示例
Unicode的编码形式与对应的字符串相互转换 /** * Unicode的编码形式与对应的字符串相互转换 * @author 白乾涛 */ public class UnicodeUtils ...
- [Unity官方文档翻译]ScrollRect
官方地址:http://docs.unity3d.com/Manual/script-ScrollRect.html 一边学习一边翻译不知效率如何= = Scroll Rect 在小区域里展示大量内容 ...
- google code 上传源码
在使用google code 的时候 做个备份, git clone https://wushuangzilong@code.google.com/p/maplebanana-proxy/ git c ...
- iOS与服务器端 GZip压缩问题
昨天搞了一天的GZip压缩,试了三种方式(libz库,ZipArchive,ASIHttpRequest),一开始都不成功.理论上三个应该都能用的,但我都不行.等我试到第三种方式的时候才知道,不是我的 ...
- CSS Display(显示) 与 Visibility(可见性)
display属性设置一个元素应如何显示,visibility属性指定一个元素应可见还是隐藏. Box 1 Box 2 Box 3 隐藏元素 - display:none或visibility:hid ...
- HDU_1241 Oil Deposits(DFS深搜)
Problem Description The GeoSurvComp geologic survey company is responsible for detecting underground ...
- UVA10142/PC110108Australian Voting
UVA10142/PC110108Australian Voting 10142 Australian Voting Accepted C++11 0.769 2014-02-11 05:01:20 ...
- Fedora 21 中添加及更新源的命令
原文: Fedora 21 中添加及更新源的命令 fedora的软件源信息文件(*.repo)都是放在 /etc/yum.repos.d 目录下的.可以通过# ls -l /etc/yum.repos ...
- poj 1170 Shopping Offers
Shopping Offers Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4696 Accepted: 1967 D ...