SDUTOJ------3306
来源:互联网 发布:pdf.js 获取总页数 编辑:程序博客网 时间:2024/06/04 17:52
英文题看不懂
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
b矩阵是a的或,已知b求啊;
思路:反推a,找矛盾;
题目描述
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.
输入
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).
输出
In the first line, print "NO" if Nam has made a mistake when calculating B, otherwise print "YES".
示例输入
2 21 00 02 31 1 11 1 1
示例输出
NOYES
提示
来源
scf0920
示例程序
#include <iostream>#include<cstring>#include<cstdio>#include<cmath>#include<queue>#include<algorithm>#include<stack>#include<set>#include<vector>#define LL long longusing namespace std;int a[110][110],b[110][110];int main(){ int m,n; while(~scanf("%d%d",&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++) { scanf("%d",&b[i][j]); if(!b[i][j]) { for(int k=1;k<=n;k++) { a[k][j]=0; } for(int k=1;k<=m;k++) { a[i][k]=0; } } } } bool flag=1; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(b[i][j]) { flag=0; for(int k=1;k<=n;k++) { if(a[k][j]) { flag=1; break; } } for(int k=1;k<=m;k++) { if(a[i][k]) { flag=1; break; } } } if(!flag) break; } if(!flag) break; } if(flag) printf("YES\n"); else printf("NO\n"); } return 0;}
0 0
- SDUTOJ------3306
- sdutoj
- SDUTOJ
- SDUToj
- SDUToj
- SDUToj
- SDUTOJ 3306 英文题看不懂
- SDUTOJ 1500
- sdutoj 3305
- SDUToj 3311
- SDUTOJ 3312
- SDUTOJ 1250 统计元音
- SDUTOJ 1568 俄罗斯方块
- SDUTOJ 2550 大小写转换
- sdutoj 1129 电路稳定性
- sdutoj 1468 求素数
- sdutoj 1269 走迷宫
- SDUTOJ 1130 拔河
- 代码实现截图(全屏,局部)
- HDU 1565 方格取数(1)(最大点权独立集)
- Android界面动画初探之--探索侧边栏折叠效果的实现
- Android实战技巧之四十:Android5.1.1源代码编译与烧写
- 【socket】有关socket的编程<一>
- SDUTOJ------3306
- IP地址分类
- Assetbundle的原理
- SGU 438 The Glorious Karlutka River =) 动态网络流
- Servlet注册功能的实现
- u-boot-2009.11移植(适用于TQ2440和MINI2440)第一篇:建立开发板文件,测试编译环境
- HDU 1569 方格取数(2)(最大点权独立集)
- 类再生
- 31 Next Permutation