「LibreOJ β Round #4」框架
https://loj.ac/problem/527
题目描述
有一个n×m的矩形框架,但其中有些边被删除了。qmqmqm想知道剩余部分中还有多少完整的正方形。只有当一个正方形的每一条边均被保留下来,这个正方形才是完整的。
输入格式
输入第一行包含两个正整数n,m。
之后n行,每行m−1个空格隔开的整数为0或1,表示横向边的存在情况。
之后n−1行,每行m个空格隔开的整数为0或1,表示竖向边的存在情况。
输出格式
输出一行一个整数表示剩余完整正方形的个数。
样例
样例输入
3 3
1 1
0 1
1 1
1 1 1
1 0 1
样例输出
2
预处理每个方格上边往右最多能延伸的长度,每个方格左边往下最多能延伸的长度
枚举每一个小方格作为正方形的左上角
从边长1开始扩展,扩展到不能在扩展
时间复杂度:O(n^3 / w)
#include<cstdio>
#define N 1001
using namespace std;
int n,m;
int trans[N][N],erect[N][N];
int left[N][N],up[N][N];
void init()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
for(int j=;j<m;j++)
scanf("%d",&up[i][j]);
for(int i=;i<n;i++)
for(int j=;j<=m;j++)
scanf("%d",&left[i][j]);
for(int i=;i<=n;i++)
for(int j=m-;j;j--)
if(up[i][j]) up[i][j]+=up[i][j+];
for(int j=;j<=m;j++)
for(int i=n-;i;i--)
if(left[i][j]) left[i][j]+=left[i+][j];
}
void solve()
{
int k,ans=;
for(int i=;i<n;i++)
for(int j=;j<m;j++)
if(up[i][j] && left[i][j])
{
k=;
while(up[i][j]>=k && left[i][j]>=k )
{
if(up[i+k][j]>=k && left[i][j+k]>=k) ans++;
k++;
}
}
printf("%d",ans);
}
int main()
{
init();
solve();
}
「LibreOJ β Round #4」框架的更多相关文章
- LibreOJ #527. 「LibreOJ β Round #4」框架
二次联通门 : LibreOJ #527. 「LibreOJ β Round #4」框架 /* LibreOJ #527. 「LibreOJ β Round #4」框架 %% xxy dalao 对于 ...
- 「LibreOJ β Round #4」框架 [bitset]
题面 loj #include <cmath> #include <cstring> #include <cstdio> #include <cstdlib& ...
- loj #547. 「LibreOJ β Round #7」匹配字符串
#547. 「LibreOJ β Round #7」匹配字符串 题目描述 对于一个 01 串(即由字符 0 和 1 组成的字符串)sss,我们称 sss 合法,当且仅当串 sss 的任意一个长度为 ...
- [LOJ#531]「LibreOJ β Round #5」游戏
[LOJ#531]「LibreOJ β Round #5」游戏 试题描述 LCR 三分钟就解决了问题,她自信地输入了结果-- > -- 正在检查程序 -- > -- 检查通过,正在评估智商 ...
- [LOJ#530]「LibreOJ β Round #5」最小倍数
[LOJ#530]「LibreOJ β Round #5」最小倍数 试题描述 第二天,LCR 终于启动了备份存储器,准备上传数据时,却没有找到熟悉的文件资源,取而代之的是而屏幕上显示的一段话: 您的文 ...
- [LOJ#516]「LibreOJ β Round #2」DP 一般看规律
[LOJ#516]「LibreOJ β Round #2」DP 一般看规律 试题描述 给定一个长度为 \(n\) 的序列 \(a\),一共有 \(m\) 个操作. 每次操作的内容为:给定 \(x,y\ ...
- [LOJ#515]「LibreOJ β Round #2」贪心只能过样例
[LOJ#515]「LibreOJ β Round #2」贪心只能过样例 试题描述 一共有 \(n\) 个数,第 \(i\) 个数 \(x_i\) 可以取 \([a_i , b_i]\) 中任意值. ...
- [LOJ#525]「LibreOJ β Round #4」多项式
[LOJ#525]「LibreOJ β Round #4」多项式 试题描述 给定一个正整数 k,你需要寻找一个系数均为 0 到 k−1 之间的非零多项式 f(x),满足对于任意整数 x 均有 f(x) ...
- [LOJ#526]「LibreOJ β Round #4」子集
[LOJ#526]「LibreOJ β Round #4」子集 试题描述 qmqmqm有一个长为 n 的数列 a1,a2,……,an,你需要选择集合{1,2,……,n}的一个子集,使得这个子集中任意两 ...
随机推荐
- CSU 1808: 地铁 最短路
题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1808 1808: 地铁 Time Limit: 5 SecMemory Limit: ...
- C语言自评
问卷调查:你对自己的未来有什么规划?做了哪些准备?答:做设计方面的工作:正在努力自学有关这方面的知识 你认为什么是学习?学习有什么用?现在学习动力如何?为什么?答:学习就是增长见识:学习的作用就是为了 ...
- lintcode-397-最长上升连续子序列
397-最长上升连续子序列 给定一个整数数组(下标从 0 到 n-1, n 表示整个数组的规模),请找出该数组中的最长上升连续子序列.(最长上升连续子序列可以定义为从右到左或从左到右的序列.) 注意事 ...
- HashMap和HashTable源码分析
HashMap HashMap是一个实现了Map接口的Hash表.提供所有Map的操作,并且允许null key和null value.HashMap几乎等同于HashTable,只不过HashMap ...
- 团队项目-BUG挖掘
测试硬件: 华为畅享5 测试平台: 安卓5.1 测试项目Git地址: https://github.com/RABITBABY/We-have-bing 测试Apk来源地址: http://www.a ...
- linux的一些机制Signal, Fork,
signal(SIGCHLD, SignalHandler); 注册软中断,对应的api close(socket); ret=fork(): 父进程,返回子进程的pid. 子进程返回0, 出错返回& ...
- c语言基础笔记
一 :数据类型 1.float类型,在输出的时候可以使用 .数字 来把浮点数精确到小数点后几位,比如 printf("%.3f",float)精确到小数点后三位,不足补0 2.字 ...
- 判断一个变量是不是json,以及如何将变量转换成json
https://blog.csdn.net/A123638/article/details/52486975这里看到一个很好的方法 // 判断变量是不是jsonisJson(variable: any ...
- PHP中与类和对象有关的几个系统函数
与类有关的系统函数: class_exists(“类名”), 判断一个类是否存在(是否定义过) interface_exists(“接口名”), 判断一个接口是否存在(是否定义过) get_class ...
- web三大组件的加载顺序
Web三大组件:过滤器组件 监听器组件 Servlet组件 过滤器的顶级接口:javax.servlet.Filter 监听器的顶级接口:javax.servlet.ServletContextL ...