暴力做法:1.对每一行/列求$or$;2.枚举行的差值$i$,并对任意相差为$i$的行和相差为$k-i$的列求$and$,对行/列的$and$结果求$or$,对行和列的$or$求$and$,对所有$i$的$and$求$or$即为答案
很明显,这样的指令数达到了$o(n^{2})$,需要优化
上述做法的瓶颈在于枚举距离,没有将行和列分开处理,那么容易想到将坐标系旋转,即$(x,y)=>(x-y,x+y)$
此时,对于两点的坐标$(x_{1},y_{1})$和$(x_{2},y_{2})$,两点间的距离为$\max(|x_{1}-y_{1}|,|x_{2}-y_{2}|)$,那么相当于要求一维恰好为$k$且另一维不超过$k$,简单判定即可
具体做法:1.对每一行/列(新图中的)求$or$;2.判定是否恰好为$k$,对任意差为$k$的行/列求$and$,对行/列的结果求$or$;3.判定是否不超过$k$(以行为例),对每一行将之后的$k$行$or$再与自己$and$一下(特殊情况:在同一行,将所有位置$xor$一下以起$or$即可);4.最终将4个结果合并起来即为答案
大概的复杂度分别是$o(n)$和$o(n^{2})$,常数十分宽松

 1 #include "vision.h"
2 #include<bits/stdc++.h>
3 using namespace std;
4 #define N 405
5 vector<int>vx[N],vy[N];
6 int n,m,k,sx1,sx2,sy1,sy2,vis[N];
7 vector<int> vec(int x,int y){
8 vector<int>v;
9 v.push_back(x);
10 v.push_back(y);
11 return v;
12 }
13 int calc1(){
14 vector<int>v;
15 for(int i=0;i<n+m-k;i++)
16 if ((vis[i])&&(vis[i+k]))v.push_back(add_and(vec(vis[i],vis[i+k])));
17 return add_or(v);
18 }
19 int calc2(){
20 vector<int>v,vv;
21 for(int i=0;i<n+m;i++)
22 if (vis[i])vv.push_back(vis[i]);
23 v.push_back(add_xor(vv));
24 for(int i=0;i<n+m;i++){
25 vv.clear();
26 for(int j=1;j<=k;j++)
27 if ((i+j<n+m)&&(vis[i+j]))vv.push_back(vis[i+j]);
28 if ((vis[i])&&(vv.size()))v.push_back(add_and(vec(vis[i],add_or(vv))));
29 }
30 return add_or(v);
31 }
32 void construct_network(int nn,int mm,int kk){
33 n=nn,m=mm,k=kk;
34 for(int i=0;i<n;i++)
35 for(int j=0;j<m;j++){
36 vx[i-j+m].push_back(i*m+j);
37 vy[i+j].push_back(i*m+j);
38 }
39 for(int i=0;i<n+m;i++)
40 if (vx[i].size())vis[i]=add_or(vx[i]);
41 int s1=calc1(),s2=calc2();
42 memset(vis,0,sizeof(vis));
43 for(int i=0;i<n+m;i++)
44 if (vy[i].size())vis[i]=add_or(vy[i]);
45 add_or(vec(add_and(vec(s1,calc2())),add_and(vec(s2,calc1()))));
46 }

[loj3179]视觉程序的更多相关文章

  1. NI Vision for LabVIEW 基础(一):NI Vision 简介

    NI Vision 控件模板 Vision控件模板位于LabVIEW控件模板的最顶层,由一下元素组成: IMAQ Image.ctl—该控件是一个类型定义,用于声明图象类型的数据.在VI的前面板中使用 ...

  2. Halcon一日一练:CAD类型的相关操作

    大很多场合,需要在视觉程序中导入CAD文档,比如,在3C行业,需要对手机外壳进行CNC加工,或者点胶操作,此时,需要获取产品的各个点的数据.如果将CAD直接导入,就会大的减少编程工作量,同时也能达到很 ...

  3. 【转载】OpenCV(C++ 与 Python 的比较)与 MATLAB 的比较

    原文作者 : Satya Mallick 译者 : aleen42 原文  https://aleen42.gitbooks.io/personalwiki/content/translation/o ...

  4. Python10个图像处理工具

    原文地址:https://cloud.tencent.com/developer/article/1498116 译者 | 小韩 来源 | towardsdatascience [磐创AI导读]:本篇 ...

  5. Image Processing and Analysis_8_Edge Detection:Finding Edges and Lines in Images by Canny——1983

    此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...

  6. 十个python图像处理工具

    介绍 如今的世界存在了大量的数据,图像数据是重要的组成部分.如果要利用这些图片,需要对图像进行处理,提高图片质量或提取图片内容信息. 图像处理的常见操作包括图像显示,基本操作如裁剪,翻转,旋转等,图像 ...

  7. 记录一些移动端H5,小程序视觉还原问题及方法

    前端,特别是移动端如果对视觉还原要求比较高的时候.功能测试和性能测试完成之后.UI真的是一个像素一个像素的给你抠出来哪里还原不到位 之前项目要求还原度要达到98%以上.所以每到视觉还原的时候真的是挺痛 ...

  8. 小程序UI设计(4)-符合视觉规范-表单输入视觉规范

    下图是微信官方的要求 按照小程序UI设计(3)-符合视觉规范-列表视觉规范同样的方式,我们可以设计一样符合规范的输入项目.规范中没有说明padding-left的大小,我们暂定是15px.这样最外层v ...

  9. 小程序UI设计(3)-符合视觉规范-列表视觉规范

    上一篇我们介绍了字体规范,此贴介绍一下在列表中如何组合使用.下图是微信官方的要求   在工具中通过拖拽组件可以制作出一样的效果拖拽一个WViewRow.这个组件是小程序的view,flex-direc ...

随机推荐

  1. springcloud组件之hystrix服务熔断,降级,限流

    hystrix 简介 Hystrix是什么 在分布式环境中,许多服务依赖项中的一些必然会失败.Hystrix是一个库,通过添加延迟容忍和容错逻辑,帮助你控制这些分布式服务之间的交互.Hystrix通过 ...

  2. 专访阿里云 Serverless 负责人:无服务器不会让后端失业

    2012 年,云基础设施服务提供商 Iron.io 的副总裁 Ken 谈到软件开发行业的未来,首次提出了 Serverless 的概念,为云中运行的应用程序描述了一种全新的系统体系架构.此后,以 AW ...

  3. 题解 CF241E Flights

    题目传送门 题目大意 给出一个 \(n\) 个点 \(m\) 条边的 \(\texttt{DAG}\) ,给每条边设定边权为 \(1\) 或者 \(2\) ,使得 \(1\to n\) 的每条路径长度 ...

  4. git 修改最后一次提交

    git 修改最后一次提交 有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了. 此时,可以运行带有 --amend 选项的提交命令来重新提交:git commit --amend -m ...

  5. 《JavaScript DOM编程艺术》:+= 相加之后再赋值

    第2章  第20页 += var year = 2010; var message = "The year is"; message += year; message += yea ...

  6. 【UE4 设计模式】享元模式 Flyweight Pattern

    概述 描述 运用共享技术有效地支持大量细粒度对象的复用.系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用. 由于享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻 ...

  7. 《手把手教你》系列技巧篇(三十四)-java+ selenium自动化测试-单选和多选按钮操作-中篇(详解教程)

    1.简介 今天这一篇宏哥主要是讲解一下,如何使用list容器来遍历单选按钮.大致两部分内容:一部分是宏哥在本地弄的一个小demo,另一部分,宏哥是利用JQueryUI网站里的单选按钮进行实战. 2.d ...

  8. Scrum Meeting 0522

    零.说明 日期:2021-5-22 任务:简要汇报两日内已完成任务,计划后两日完成任务 备注:由于在Beta冲刺阶段的最后一周中团队成员需要准备必修课程计算机网络的相关考试,所以为了保证Beta功能的 ...

  9. NodeJs安装与环境配置

    https://blog.csdn.net/qq_43285335/article/details/90696126 https://www.cnblogs.com/liuqiyun/p/813390 ...

  10. Java I/O框架 - 总结概述

    总结 以下需要重点掌握: 字节流,以下读取结束全部返回-1 字节节点流-访问文件 FileInputStream/FileOutputStream 可以读取任意文件 可以复制图片 读取字符String ...