Check Corners
来源:互联网 发布:ubuntu安装git失败 编辑:程序博客网 时间:2024/06/05 02:48
http://acm.hdu.edu.cn/showproblem.php?pid=2888
#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <cstdlib>using namespace std;const int maxn=300;int di[maxn][maxn][9][9];void st(int m,int n){int k1,k2,u1,u2;k1=(int)((log(1.0*m))/log(2.0));k2=(int)((log(1.0*n))/log(2.0));for(int kx=0;kx<=k1;kx++)for(int ky=0;ky<=k2;ky++)if(kx||ky)for(int i=0;i+(1<<kx)-1<m;i++)for(int j=0;j+(1<<ky)-1<n;j++){if(kx==0)di[i][j][kx][ky]=max(di[i][j][kx][ky-1],di[i][j+(1<<(ky-1))][kx][ky-1]);else if(ky==0)di[i][j][kx][ky]=max(di[i][j][kx-1][ky],di[i+(1<<(kx-1))][j][kx-1][ky]);else{u1=max(di[i][j][kx-1][ky-1],di[i+(1<<(kx-1))][j][kx-1][ky-1]);u2=max(di[i][j+(1<<(ky-1))][kx-1][ky-1],di[i+(1<<(kx-1))][j+(1<<(ky-1))][kx-1][ky-1]);di[i][j][kx][ky]=max(u1,u2);}}}int sou(int r1,int c1,int r2,int c2){int k1,k2;k1=(int)((log(1.0*(r2-r1+1)))/log(2.0));k2=(int)((log(1.0*(c2-c1+1)))/log(2.0));//system("pause");int ans1,ans2;ans1=max(di[r1][c1][k1][k2],di[r2-(1<<k1)+1][c1][k1][k2]);ans2=max(di[r1][c2-(1<<k2)+1][k1][k2],di[r2-(1<<k1)+1][c2-(1<<k2)+1][k1][k2]);return max(ans1,ans2);}int main(int argc, char *argv[]){int m,n;while(scanf("%d%d",&m,&n)==2){for(int i=0;i<m;i++)for(int j=0;j<n;j++)scanf("%d",&di[i][j][0][0]);st(m,n);int p;scanf("%d",&p);int r1,c1,r2,c2,da;while(p--){scanf("%d%d%d%d",&r1,&c1,&r2,&c2);da=sou(r1-1,c1-1,r2-1,c2-1);printf("%d ",da);if(da==di[r1-1][c1-1][0][0]||da==di[r1-1][c2-1][0][0]||da==di[r2-1][c1-1][0][0]||da==di[r2-1][c2-1][0][0])printf("yes\n");else printf("no\n");}}return 0;}
0 0
- Check Corners
- hdu 2888 Check Corners
- HDU 2888 Check Corners
- HDOJ 2888 Check Corners
- HDU2888 Check Corners
- hdu 2888 Check Corners
- hdu-2888 Check Corners
- HDU 2888 Check Corners
- HDU-2888-Check Corners
- HDU 2888 Check Corners
- HDU-OJ-2888 Check Corners
- hdu 2888 Check Corners(RMQ)
- hdu 2888 Check Corners【RMQ】
- HDU2888 Check Corners (二维RMQ)
- HDU2888-Check Corners(RMQ)
- hdu 2888Check Corners 二维rmq
- hdu 2888 Check Corners(二维rmq)
- HDU 2888 Check Corners(简单二维RMQ)
- 为Spark DataGrid的标题栏添加图标
- 创业感悟之提笔篇
- 6个变态的C语言Hello World程序——更好的理解C
- Details of different phases of a spam-saint update and the logs that needs to be checked while impor
- 编程开发中最浪费时间和资源的7个错误
- Check Corners
- 如何从 Google Play 下载 Android 程序到电脑上
- Volume 1. Elementary Problem Solving :: Sorting/SearchingUva 340,10420,10474,152,299,120,156,400,755
- AndroidManifest.xml文件的作用和简单使用
- 求高精度幂
- 关于vs2010输出界面闪烁一下就关闭的问题
- Qt-程序发布
- 读书笔记(1)
- STL vector中的emplace_back方法(24)