题意:一个n*m的01矩阵,Q个询问,每次询问一个矩形区域内,最大的全1正方形的边长是多少?

题解:dp[0][0][i][j]表示以(i, j)为右下角的正方形的最长边长。RMQ后,二分答案即可。

 #include <cstdio>
 #include <iostream>
 #include <algorithm>
 using namespace std;
 typedef long long ll;
 ;
 int x1, y1, x2, y2, n, m;
 int a[N][N];
 ][][N][N];
 int Log[N];
 int ask(int x1, int y1, int x2, int y2){
     ], k2 = Log[y2-y1+];
     <<k2)+]);
     ans = max(ans, dp[k1][k2][x2-(<<k1)+][y1]);
     ans = max(ans, dp[k1][k2][x2-(<<k1)+][y2-(<<k2)+]);
     return ans;
 }
 bool test(int l){
     //dp[0][x1][y1] dp[0][x2-x+1][y2-x+1]
     , y1+l-, x2, y2);
     return ret >= l;
 }
 void init(){
     ; i <= Log[n]; i++)
         ; x+(<<i)- <= n; x++)
             ; y <= m; y++)
                 dp[i][][x][y] = max(dp[i-][][x][y], dp[i-][][x+(<<i-)][y]);
     ; i <= Log[n]; i++)
         ; j <= Log[m]; j++)
             ; x+(<<i)- <= n; x++)
                 ; y+(<<j)- <= m; y++)
                     dp[i][j][x][y] = max(dp[i][j-][x][y], dp[i][j-][x][y+(<<j-)]);
 }
 int main(){
     ; i < N; i++) Log[i] = Log[i>>]+;
     scanf("%d%d", &n, &m);
     ; i <= n; i++)
         ; j <= m; j++){
             scanf("%d", &a[i][j]);
             ) dp[][][i][j] = ;
             else{
                 ][][i-][j], dp[][][i][j-]);
                 dp[][][i][j] = len+a[i-len][j-len];
             }
         }
     init();

     int t; scanf("%d", &t);
     while(t--){
         scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
         , R = min(x2-x1+, y2-y1+);
         while(L < R){
              >> ;
             if( test(M) )
                 L = M;
             else
                 R = M-;
         }
         printf("%d\n", L);
     }
     ;
 }

Codeforces 713D Animals and Puzzle的更多相关文章

  1. Codeforces 713D Animals and Puzzle(二维ST表+二分答案)

    题目链接 Animals and Puzzle 题意  给出一个1e3 * 1e3的01矩阵,给出t个询问,每个询问形如x1,y1,x2,y2 你需要回答在以$(x1, y1)$为左上角,$(x1, ...

  2. Codeforces Round #371 (Div. 1) D. Animals and Puzzle 二维倍增

    D. Animals and Puzzle 题目连接: http://codeforces.com/contest/713/problem/D Description Owl Sonya gave a ...

  3. 【CodeForces】713 D. Animals and Puzzle 动态规划+二维ST表

    [题目]D. Animals and Puzzle [题意]给定n*m的01矩阵,Q次询问某个子矩阵内的最大正方形全1子矩阵边长.n,m<=1000,Q<=10^6. [算法]动态规划DP ...

  4. Codeforces Round #371 (Div. 1) D - Animals and Puzzle 二维ST表 + 二分

    D - Animals and Puzzle #include<bits/stdc++.h> #define LL long long #define fi first #define s ...

  5. Animals and Puzzle

    Animals and Puzzle time limit per test 5 seconds memory limit per test 512 megabytes input standard ...

  6. codeforces 713D D. Animals and Puzzle 二分+二维rmq

    题目链接 给一个01矩阵, 然后每个询问给出两个坐标(x1, y1), (x2, y2). 问你这个范围内的最大全1正方形的边长是多少. 我们dp算出以i, j为右下角的正方形边长最大值. 然后用二维 ...

  7. CodeForces 35D Animals

    G - Animals Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit  ...

  8. Codeforces 761E Dasha and Puzzle(构造)

    题目链接 Dasha and Puzzle 对于无解的情况:若存在一个点入度大于4,那么直接判断无解. 从根结点出发(假设根结点的深度为0), 深度为0的节点到深度为1的节点的这些边长度为2^30, ...

  9. 『NYIST』第九届河南省ACM竞赛队伍选拔赛[正式赛二]--Codeforces -35D. Animals

    D. Animals time limit per test 2 seconds memory limit per test 64 megabytes input input.txt output o ...

随机推荐

  1. jquery easyui读取json文件乱码

    输出的json要求用utf-8,否则因json的编码格式有问题显示不了中文.记事本默认编码是ANSI,若保存的json是由记事本改后的缀名,则json格式有问题,显示中文为乱码. 解决方法:打开.js ...

  2. java 模拟消息的发送功能

    import java.util.HashMap; import java.util.Iterator; import java.util.Map; /* * 完成消息的发送功能 * 在发送消息之前, ...

  3. AngularJS 用 Interceptors 来统一处理 HTTP 请求和响应

    Web 开发中,除了数据操作之外,最频繁的就是发起和处理各种 HTTP 请求了,加上 HTTP 请求又是异步的,如果在每个请求中来单独捕获各种常规错误,处理各类自定义错误,那将会有大量的功能类似的代码 ...

  4. [团队项目2.0]软件改进分析MathAPP

    软件改进分析 在此基础上,进行软件的改进. 首先,我们把这个软件理解成一个投入市场的.帮助小朋友进行算术运算练习的APP. 从质量保证的角度,有哪些需要改进的BUG? 从用户的角度(把自己当成小学生或 ...

  5. 查询SQL 对象及存储过程

    select * from database..sysobjects order by name EXEC Sp_HelpText 'Proc_Export268';

  6. ReentrantLock的原理学习

    转载:https://my.oschina.net/andylucc/blog/651982 摘要 提到JAVA加锁,我们通常会想到synchronized关键字或者是Java Concurrent ...

  7. N-gram介绍

    在实际应用中,我们经常需要解决这样一类问题:如何计算一个句子的概率?如: 机器翻译:P(high winds tonite) > P(large winds tonite) 拼写纠错:P(abo ...

  8. uva 10090 Marbles

    Problem F Marbles Input: standard input Output: standard output I have some (say, n) marbles (small ...

  9. #pragma 的使用

    #pragma 的使用 尽管 C 和 C++ 都已经有标准,但是几乎每个编译器 (广义,包含连接器等) 扩展一些 C/C++ 关键字. 合理地应用这些关键字,有时候能使我们的工作非常方便.下面随便说说 ...

  10. 配置 ASP.NET Linux( CentOS 6.5 ) 运行环境 MONO + Jexus

    1.更新系统 在命令行下执行 yum –y update 2.安装必要的软件 yum -y install gcc gcc-c++ bison pkgconfig glib2-devel gettex ...