http://acm.hdu.edu.cn/showproblem.php?pid=2888

模板题  直接用二维rmq

读入数据时比较坑爹  cin 会超时

 #include <cstdio>
#include <cstring>
#include <algorithm> using namespace std;
const int maxn = ; int N, M, Q, g[maxn][maxn], dp[maxn][maxn][][]; void rmq_init(int n, int m) {
for (int i = ; i <= n; i++) {
for (int j = ; j <= m; j++)
dp[i][j][][] = g[i][j];
} for (int x = ; (<<x) <= n; x++)
for (int y = ; (<<y) <= m; y++)
if (x + y)
for (int i = ; i + (<<x) - <= n; i++)
for (int j = ; j + (<<y) - <= m; j++) {
if (x)
dp[i][j][x][y] = max(dp[i][j][x-][y], dp[i+(<<(x-))][j][x-][y]);
else
dp[i][j][x][y] = max(dp[i][j][x][y-], dp[i][j+(<<(y-))][x][y-]);
}
} int rmq_query(int x1, int y1, int x2, int y2) {
int x = , y = ;
while ((<<(x+)) <= x2 - x1 + ) x++;
while ((<<(y+)) <= y2 - y1 + ) y++;
x2 = x2 - (<<x) + ;
y2 = y2 - (<<y) + ; return max( max(dp[x1][y1][x][y], dp[x2][y1][x][y]), max(dp[x1][y2][x][y], dp[x2][y2][x][y]));
} int main () {
while (scanf("%d%d", &N, &M) == ) {
for (int i = ; i <= N; i++) {
for (int j = ; j <= M; j++)
scanf("%d", &g[i][j]);
}
rmq_init(N, M); scanf("%d", &Q);
int x1, y1, x2, y2;
while (Q--) {
scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
int ans = rmq_query(x1, y1, x2, y2);
bool flag = false;
if (ans == g[x1][y1] || ans == g[x1][y2] || ans == g[x2][y1] || ans == g[x2][y2])
flag = true;
printf("%d %s\n", ans, flag ? "yes" : "no");
}
}
return ;
}

hduacm 2888 ----二维rmq的更多相关文章

  1. hdu 2888 二维RMQ模板题

    Check Corners Time Limit: 2000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  2. hdu 2888 二维RMQ

    Check Corners Time Limit: 2000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  3. HDU 2888:Check Corners(二维RMQ)

    http://acm.hdu.edu.cn/showproblem.php?pid=2888 题意:给出一个n*m的矩阵,还有q个询问,对于每个询问有一对(x1,y1)和(x2,y2),求这个子矩阵中 ...

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

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

  5. 【HDOJ 2888】Check Corners(裸二维RMQ)

    Problem Description Paul draw a big m*n matrix A last month, whose entries Ai,j are all integer numb ...

  6. 二维RMQ hdu 2888

    题目:点这里 题意:给出一个n*m的矩阵,然后又Q个询问:每个询问有x1,y1,x2,y2,x1,y1为子矩阵的左上角坐标,x2,y2为右上角的坐标.求此子矩阵中元素最大值,判断最大值是否在子矩阵四个 ...

  7. hdu2888 二维RMQ

    Check Corners Time Limit: 2000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  8. HDU2888 Check Corners(二维RMQ)

    有一个矩阵,每次查询一个子矩阵,判断这个子矩阵的最大值是不是在这个子矩阵的四个角上 裸的二维RMQ #pragma comment(linker, "/STACK:1677721600&qu ...

  9. POJ 2019 Cornfields [二维RMQ]

    题目传送门 Cornfields Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 7963   Accepted: 3822 ...

随机推荐

  1. 播放列表文件用于HTTP实时流的使用

    广告播放清单(Discontinuities): 通常你会想要提供一系列的电影,在每个电影前面显示一些品牌(广告),让用户知道这些电影来自你的特定网站.一种方法是简单地将广告与每部电影合并.但是如果你 ...

  2. iOS 设置button中图文位置

    方法一. -(CGRect)imageRectForContentRect:(CGRect)contentRect {    return CGRectMake(self.width - kImage ...

  3. HTML <meta> 标签

    <meta> 元素可提供有关页面的元信息,元数据总是以名称/值的形式被成对传递的. <meta> 标签位于文档的头部,不包含任何内容. <meta> 标签的属性定义 ...

  4. BigTale

    Google's BigTable 原理 (翻译)     题记:google 的成功除了一个个出色的创意外,还因为有 Jeff Dean 这样的软件架构天才.                     ...

  5. awt组件中文乱码Intellij解决

    -Dfile.encoding=GB18030 -Dfile.encoding=GB18030

  6. Android布局_网格布局GirdLayout

    自Android4.0版本后新增的GirdLayout网格布局(API 14) <?xml version="1.0" encoding="utf-8"? ...

  7. Android控件之MultiAutoCompleteTextView(自动匹配输入的内容)

    一.功能 可支持选择多个值(在多次输入的情况下),分别用分隔符分开,并且在每个值选中的时候再次输入值时会自动去匹配,可用在发送短信,发邮件时选择联系人这种类型中 二.独特属性 android:comp ...

  8. android下调用C,JNI调用

    1.eclipse中声明调用的C函数  com.example.test.MainActivity public native long RucMyfunction(int w,int h,int[] ...

  9. xcode 真机调试 failed to get the task for process xxx

    xcode 真机调试 failed to get the task for process xxx 此错误原因是,使用 in house profile 签名了真机调试的证书: 在 target--- ...

  10. jQuery Ajax学习

    地址:http://www.w3school.com.cn/jquery/jquery_ref_ajax.asp