CF821
CF821A
CF821A题意
Okabe
要改进他的实验室。实验室用一个 \(n\times n\) 的正方形网格表示(\(n\) 为正整数)。他认为,一个“好实验室”的网格内每一个不等于 \(1\) 的数字都可以用同一行和同一列的某个数字之和表示。换句话说,对于任意 \(x,y\)(\(1 \le x,y \le n\) 且 \(a_{x, y} \neq 1\)),存在两个数 \(s\) 和 \(t\),使得\(a_{x, y} = a_{x, s} + a_{t, y}\),其中\(a_{i, j}\) 表示第 \(i\) 行第 \(j\) 列的整数。
帮助Okabe
找出以下的实验室中哪个符合他的要求。
CF821A题解
暴力枚举即可
CF821A代码
#include<bits/stdc++.h>
using namespace std;
inline int read(){
int x = 0, f = 1;char ch = getchar();
while(ch < '0' || ch > '9'){if(ch == '-') f = -1;ch = getchar();}
while(ch >= '0' && ch <= '9'){x = (x << 1) + (x << 3) + (ch ^ 48);ch = getchar();}
return x * f;
}
const int maxn = 100;
int n;
int a[maxn][maxn];
signed main(){
n = read();
for(int i = 1;i <= n;i++)
for(int j = 1;j <= n;j++)
a[i][j] = read();
for(int i = 1;i <= n;i++)
for(int j = 1;j <= n;j++)
if(a[i][j] != 1){
bool check = false;
for(int s = 1;s <= n && !check;s++)
for(int t = 1;t <= n;t++){
if(a[i][s] + a[t][j] == a[i][j]){
check = true;break;
}
}
if(!check){puts("No");return 0;}
}
puts("YEs");
return 0;
}