扯在前面

本人找规律找了很长时间,然后发现找到规律之后其实是lj题,于是五分钟敲完代码,然后WA了两发

正文

题意:

A, B 都是 n*m 的 01 矩阵,已知 B 矩阵是由A矩阵以一种规则生成

Bij 是由 A 矩阵的第 i 行行的所有元素和第 j 列列的所有元素进行 或运算 得到

给定B矩阵,求是否存在一个矩阵A能被合理生成;

不懂的同学可以先了解一下或运算

传送门


分析:

因为我们已知以下关系且每次参与运算的是一整行和一整列的所有数

0|0=0;  0|1=1;  1|0=1;  1|1=1;

所以

  • 当某个位置只要出现一个零,那么他对应矩阵所在的整行或整列如果是零都会是零,因为只要出现一个一,他就不可能是零;
  • 这样的话当然我们也会知道知道,当某行或某列出现一个一时,那他的整行整列必定会出现至少一个一,因为只要有一参与或运算就会是一

做法

知道这两个结论之后我们就可以用简单的方法做题了

根本不用或运算符|,而是另一种方法:

  1. 先把A矩阵赋值为只有1的矩阵,然后填零
  2. 当在B矩阵中找到某个位置是0时,就把A矩阵对应的整行整列都赋值成0
  3. 当在B矩阵中找到某个位置是1时,就查看一下A矩阵对应的行与列是否有1,若没有则为NO
  4. 剩下的输出YES

代码

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#define maxn 500
using namespace std;
int n,m,b[maxn][maxn],a[maxn][maxn];
int cnt;
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
a[i][j]=1;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>b[i][j];
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(b[i][j]==0){
for(int k=1;k<=n;k++)
a[k][j]=0;
for(int k=1;k<=m;k++)
a[i][k]=0;
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(b[i][j]==1){
for(int k=1;k<=n;k++)
if(a[k][j]==1){
cnt++;
break;
}
for(int k=1;k<=m;k++)
if(a[i][k]==1){
cnt++;
break;
}
if(cnt==0){
cout<<"NO";
return 0;
}
}
}
}
cout<<"YES"<<endl;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}

制作不易,请各位批评指正

CF486B的更多相关文章

  1. CF486B OR in Matrix(构造+思维)

    CF486B 一道有趣的思维题 由于or的性质可知只要a[i][j]为1那么b中第i行,第j列将都变成1 相反的,如果b[i][j]是0那么a中第i行,第j列都必须是0 根据第二个性质我们可以构造出a ...

  2. cf486B OR in Matrix

    B. OR in Matrix time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  3. ACM团队周赛题解(2)

    拉了CF583和CF486的两套div2题目 还是先贴宏定义部分 #define MAXN 1000000+5#define MOD 1000000007#define PI (acos(-1.0)) ...

随机推荐

  1. 干掉 powerdesigner,设计数据库表用它就够了

    最近有个新项目刚过完需求,正式进入数据库表结构设计阶段,公司规定统一用数据建模工具 PowerDesigner.但我并不是太爱用这个工具,因为它的功能实在是太多了,显得很臃肿,而平时设计表用的也就那么 ...

  2. Hbase集群模式搭建

    1.官网下载hbase安装包 这里不做赘述. 2.解压---直接tar -zxvf xxxx 3.配置hbase集群,要修改3个文件(首先zk集群已经安装好了) 注意:要把hadoop的hdfs-si ...

  3. mapboxgl实现带箭头轨迹线

    最近在使用mapboxgl实现轨迹展示时,想实现类似高德地图导航轨迹效果,然而并未在网上找到类似示例.经一番研究与尝试,最终解决,效果如下. 添加箭头核心代码如下,只需在配置layout中添加symb ...

  4. VUE项目性能优化实践——通过懒加载提升页面响应速度

    本文由葡萄城技术团队原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 最近我司因业务需求,需要在一个内部数据分析平台集成在线Excel功能,既然我 ...

  5. IDEA配置JRebel实现热部署

    IDEA配置JRebel实现热部署 1.下载JRebel and XRebel for Intellij插件 2. 激活 请查看这个文章http://www.cicoding.cn/other/jre ...

  6. 索引失效 -- 使用Between范围查询时

    需求说明 产品需要统计一段时间范围内每月用户的注册人数(根据用户信息表中的创建时间),需要我通过SQL导出数据,但是数据量太大,导出需要20多秒,于是我尝试在创建时间字段中加索引,但是发现加了索引后索 ...

  7. 消息队列 ---常用的 MQ 中间件

    目前市面上比较常用的 MQ(Message Queue,消息队列)中间件有 RabbitMQ.Kafka.RocketMQ,如果是轻量级的消息队列可以使用 Redis 提供的消息队列,其中 Redis ...

  8. WPF ToolTip 绑定

    Tool绑定: 绑定到ComboBox的SelectValue <ComboBox Name="cmb_WHSCD" VerticalAlignment="Cent ...

  9. CSS卡片旋转

    html{ perspective: 800px; } body{ display:flex; flex-wrap: wrap; } .card{ transform-style: preserve- ...

  10. 【MySQL 基础】MySQL必知必会

    MySQL必知必会 简介 <MySQL必知必会>的学习笔记和总结. 书籍链接 了解SQL 数据库基础 什么是数据库 数据库(database):保存有组织的数据的容器(通常是一个文 件或一 ...