最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

CF#277(Div.2)B.(预处理)_html/css

来源:懂视网 责编:小采 时间:2020-11-27 15:58:04
文档

CF#277(Div.2)B.(预处理)_html/css

CF#277(Div.2)B.(预处理)_html/css_WEB-ITnose:B. OR in Matrix time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output 题目链接: http://codeforces.com/contest/486/problem/B Let's define logical OR as an operation on
推荐度:
导读CF#277(Div.2)B.(预处理)_html/css_WEB-ITnose:B. OR in Matrix time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output 题目链接: http://codeforces.com/contest/486/problem/B Let's define logical OR as an operation on

B. OR in Matrix

time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

题目链接: http://codeforces.com/contest/486/problem/B

Let's define logical OR as an operation on two logical values (i. e. values that belong to the set {0,?1}) that is equal to 1 if either or both of the logical values is set to 1, otherwise it is 0. We can define logical OR of three or more logical values in the same manner:

where is equal to 1 if some ai?=?1, otherwise it is equal to 0.

Nam has a matrix A consisting of m rows and n columns. The rows are numbered from 1 to m, columns are numbered from 1 to n. Element at row i (1?≤?i?≤?m) and column j (1?≤?j?≤?n) is denoted as Aij. All elements of A are either 0 or 1. From matrix A, Nam creates another matrix B of the same size using formula:

.

(Bij is OR of all elements in row i and column j of matrix A)

Nam gives you matrix B and challenges you to guess matrix A. Although Nam is smart, he could probably make a mistake while calculating matrix B, since size of A can be large.

Input

The first line contains two integer m and n (1?≤?m,?n?≤?100), number of rows and number of columns of matrices respectively.

The next m lines each contain n integers separated by spaces describing rows of matrix B (each element of B is either 0 or 1).

Output

In the first line, print "NO" if Nam has made a mistake when calculating B, otherwise print "YES". If the first line is "YES", then also print mrows consisting of n integers representing matrix A that can produce given matrix B. If there are several solutions print any one.

Sample test(s)

input

2 21 00 0

output

NO

input

2 31 1 11 1 1

output

YES1 1 11 1 1

input

2 30 1 01 1 1

output

YES0 0 00 1 0
解题思路:
	题目大意就是给你m和n,接下来输入m*n的B矩阵,问是否存在一个m*n的A矩阵,使得对于Bij这个元素来说,它是由A矩阵的第i行所有元素和第j列所有元素“或运算”得来。存在的话
输出YES,并输出任意一组符合条件的A矩阵,否则输出NO。
	我的方法还是偏暴力,首先开一个二维数组存A矩阵,并对其初始化元素全为1。首先这样考虑,如果Bij对应的值为0,那么A矩阵的第i行和第j列一定全部为0,出现一个1都不行,因为“或运算”全0出0。这样更新一遍后,A矩阵的0的位置就能全部确定了。接下来最暴力的部分O(n*m*max(n,m))的判断A矩阵每个位置的元素是否满足B矩阵中0或1的条件。最后flag没变的话,说明存在这样的A矩阵,同时A矩阵也被我们更新好了,
输出即可;反之,不存在输出NO。
完整代码:
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#pragma comment(linker, "/STACK:102400000,102400000")typedef long long LL;typedef double DB;typedef unsigned uint;typedef unsigned long long uLL;/** Constant List .. **/ //{const int MOD = int(1e9)+7;const int INF = 0x3f3f3f3f;const LL INFF = 0x3f3f3f3f3f3f3f3fLL;const DB EPS = 1e-9;const DB OO = 1e20;const DB PI = acos(-1.0); //M_PI;int n , m;int g[1111][1111];int res[1111][1111];bool check_0(int x , int y){ for(int i = 0 ; i < m ; i ++) { if(res[x][i] == 1) return false; } for(int i = 0 ; i < n ; i ++) { if(res[i][y] == 1) return false; } return true;}bool check_1(int x , int y){ for(int i = 0 ; i < m ; i ++) { if(res[x][i] == 1) return true; } for(int i = 0 ; i < n ; i ++) { if(res[i][y] == 1) return true; } return false;}int main(){ #ifdef DoubleQ freopen("in.txt","r",stdin); #endif while(~scanf("%d%d",&m,&n)) { for(int i = 0 ; i < m ; i ++) { for(int j = 0 ; j < n ; j ++) { scanf("%d",&g[i][j]); } } for(int i = 0 ; i < m ; i ++) { for(int j = 0 ; j < n ; j ++) { res[i][j] = 1; } } //int flag = 0 ; for(int i = 0 ; i < m ; i ++) { for(int j = 0 ; j < n ; j ++) { if(g[i][j] == 0) { for(int k = 0 ; k < n ; k ++) res[i][k] = 0; for(int k = 0 ; k < m ; k ++) res[k][j] = 0; } } } int flag1 = 0; for(int i = 0 ; i < m ; i ++) { for(int j = 0 ; j < n ; j ++) { if(g[i][j] == 0) { if(!check_0(i , j)) flag1 = 1; } else if(g[i][j] == 1) { if(!check_1(i , j)) flag1 = 1; } if(flag1) break; } if(flag1) break; } if(flag1) printf("NO\n"); else { printf("YES\n"); for(int i = 0 ; i < m ; i ++) { for(int j = 0 ; j < n ; j ++) { printf("%d%c",res[i][j], j == n - 1 ? '\n' : ' '); } } } }}

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

CF#277(Div.2)B.(预处理)_html/css

CF#277(Div.2)B.(预处理)_html/css_WEB-ITnose:B. OR in Matrix time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output 题目链接: http://codeforces.com/contest/486/problem/B Let's define logical OR as an operation on
推荐度:
标签: html css div
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top