https://loj.ac/problem/527

题目描述

有一个n×m的矩形框架,但其中有些边被删除了。qmqmqm想知道剩余部分中还有多少完整的正方形。只有当一个正方形的每一条边均被保留下来,这个正方形才是完整的。

输入格式

输入第一行包含两个正整数n,m。

之后n行,每行m−1个空格隔开的整数为0或1,表示横向边的存在情况。

之后n−1行,每行m个空格隔开的整数为0或1,表示竖向边的存在情况。

输出格式

输出一行一个整数表示剩余完整正方形的个数。

样例

样例输入

  1. 3 3
  2. 1 1
  3. 0 1
  4. 1 1
  5. 1 1 1
  6. 1 0 1

样例输出

  1. 2
  2. 预处理每个方格上边往右最多能延伸的长度,每个方格左边往下最多能延伸的长度
  1. 枚举每一个小方格作为正方形的左上角
  2. 从边长1开始扩展,扩展到不能在扩展
  3. 时间复杂度:On^3 / w
  1.  
  1. #include<cstdio>
  2. #define N 1001
  3. using namespace std;
  4. int n,m;
  5. int trans[N][N],erect[N][N];
  6. int left[N][N],up[N][N];
  7. void init()
  8. {
  9. scanf("%d%d",&n,&m);
  10. for(int i=;i<=n;i++)
  11. for(int j=;j<m;j++)
  12. scanf("%d",&up[i][j]);
  13. for(int i=;i<n;i++)
  14. for(int j=;j<=m;j++)
  15. scanf("%d",&left[i][j]);
  16. for(int i=;i<=n;i++)
  17. for(int j=m-;j;j--)
  18. if(up[i][j]) up[i][j]+=up[i][j+];
  19. for(int j=;j<=m;j++)
  20. for(int i=n-;i;i--)
  21. if(left[i][j]) left[i][j]+=left[i+][j];
  22. }
  23. void solve()
  24. {
  25. int k,ans=;
  26. for(int i=;i<n;i++)
  27. for(int j=;j<m;j++)
  28. if(up[i][j] && left[i][j])
  29. {
  30. k=;
  31. while(up[i][j]>=k && left[i][j]>=k )
  32. {
  33. if(up[i+k][j]>=k && left[i][j+k]>=k) ans++;
  34. k++;
  35. }
  36. }
  37. printf("%d",ans);
  38. }
  39. int main()
  40. {
  41. init();
  42. solve();
  43. }
  1.  

「LibreOJ β Round #4」框架的更多相关文章

  1. LibreOJ #527. 「LibreOJ β Round #4」框架

    二次联通门 : LibreOJ #527. 「LibreOJ β Round #4」框架 /* LibreOJ #527. 「LibreOJ β Round #4」框架 %% xxy dalao 对于 ...

  2. 「LibreOJ β Round #4」框架 [bitset]

    题面 loj #include <cmath> #include <cstring> #include <cstdio> #include <cstdlib& ...

  3. loj #547. 「LibreOJ β Round #7」匹配字符串

    #547. 「LibreOJ β Round #7」匹配字符串   题目描述 对于一个 01 串(即由字符 0 和 1 组成的字符串)sss,我们称 sss 合法,当且仅当串 sss 的任意一个长度为 ...

  4. [LOJ#531]「LibreOJ β Round #5」游戏

    [LOJ#531]「LibreOJ β Round #5」游戏 试题描述 LCR 三分钟就解决了问题,她自信地输入了结果-- > -- 正在检查程序 -- > -- 检查通过,正在评估智商 ...

  5. [LOJ#530]「LibreOJ β Round #5」最小倍数

    [LOJ#530]「LibreOJ β Round #5」最小倍数 试题描述 第二天,LCR 终于启动了备份存储器,准备上传数据时,却没有找到熟悉的文件资源,取而代之的是而屏幕上显示的一段话: 您的文 ...

  6. [LOJ#516]「LibreOJ β Round #2」DP 一般看规律

    [LOJ#516]「LibreOJ β Round #2」DP 一般看规律 试题描述 给定一个长度为 \(n\) 的序列 \(a\),一共有 \(m\) 个操作. 每次操作的内容为:给定 \(x,y\ ...

  7. [LOJ#515]「LibreOJ β Round #2」贪心只能过样例

    [LOJ#515]「LibreOJ β Round #2」贪心只能过样例 试题描述 一共有 \(n\) 个数,第 \(i\) 个数 \(x_i\) 可以取 \([a_i , b_i]\) 中任意值. ...

  8. [LOJ#525]「LibreOJ β Round #4」多项式

    [LOJ#525]「LibreOJ β Round #4」多项式 试题描述 给定一个正整数 k,你需要寻找一个系数均为 0 到 k−1 之间的非零多项式 f(x),满足对于任意整数 x 均有 f(x) ...

  9. [LOJ#526]「LibreOJ β Round #4」子集

    [LOJ#526]「LibreOJ β Round #4」子集 试题描述 qmqmqm有一个长为 n 的数列 a1,a2,……,an,你需要选择集合{1,2,……,n}的一个子集,使得这个子集中任意两 ...

随机推荐

  1. [并查集] More is Better

    题目描述 Mr Wang wants some boys to help him with a project. Because the project is rather complex, the ...

  2. 使用字符界面 qemu-kvm 创建虚拟机

    qemu-kvm的基本用法:指定系统类型,CPU运行模式,NUMA(Non Uniform Memory Access Architecture), 软驱设备,光驱设备,硬件设备   # 查看qemu ...

  3. ansible介绍和安装

    ansible是由 Python 编写的强大的配置管理解决方案,ansible 的特点就在于它的简洁与高效率 ansible与其他的配置管理工具不同点在于:不需要你在想要配置的每个节点上安装自己的组件 ...

  4. LAMP环境搭建Wordpress个人博客

    LAMP简要介绍 L:LinuxA:Apache(httpd)M:MySQL , MariadbP:php, perl , python 静态资源:图片,文档,视频,HTML代码,CSS代码,js代码 ...

  5. JAVA第三次笔记

  6. 【BioCode】读文件夹以发现缺失文件

    代码说明: 使用单个蛋白质的txt计算PSSM生成的结果为单个的PSSM文件. 但是由于一些原因(如蛋白质序列过长),会导致一些蛋白质txt文件无法计算出pssm,为了找到这些没有计算出pssm的蛋白 ...

  7. CodeForces Round #527 (Div3) B. Teams Forming

    http://codeforces.com/contest/1092/problem/B There are nn students in a university. The number of st ...

  8. js动态显示指定的时间

    <p id="timeShow">17:0:50</p> <script> setInterval("time()", 10 ...

  9. HDU4473_Exam

    很考验智商的一个题目,赛后看完别人的题解后秒懂了. 首先定义一个函数f(x)表示a,b的有序组合情况数使得a*b为x的一个约数. 现在给定你一个n,要你求出f(1)+f(2)+……+f(n): 题目智 ...

  10. python的N个小功能(更新文件)

    ########################################################################## #对于第二份文件:第一份与第二份不相同,以第二份为 ...