Codeforces 821A Okabe and Future Gadget Laboratory 题解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces 821A Okabe and Future Gadget Laboratory 题解相关的知识,希望对你有一定的参考价值。

此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置。

题目链接:http://codeforces.com/problemset/problem/821/A

时间限制:2秒

空间限制:256M

  Okabe要改进他的实验室。实验室用一个n*n的正方形网格表示(n为正整数)。他认为,一个“好实验室”的网格内每一个不等于1的数字都可以用同一行和同一列的某个数字之和表示。换句话说,对于任意x,y1 ≤ x, y ≤ n  ax, y ≠ 1,),存在两个数st,使得ax, y = ax, s + at, y其中ai, 表示第i行第j列的整数

  帮助Okabe找出以下的实验室中哪个符合他的要求。

输入

第一行描述实验室的大小n(1 ≤ n ≤ 50)

接下来的n行中,每行有n个整数(中间用空格隔开),表示实验室网格。

i行第j列的整数是ai, j  (1 ≤ ai, j ≤ 105).

输出

如果实验室符合要求,输出“Yes”,否则输出“No”

不考虑大小写问题

 

样例输入#1

3
1 1 2
2 3 1
6 4 1

样例输出#1

Yes

样例输入#2

3
1 5 2
1 1 1
1 2 3

样例输出#2

No

 

注释

在样例1中,左下角的6可以表示为24的和。同样地,网格中所有非1的数字都可以分别用同行、同列的两数之和表示,因此输出“Yes.

在样例2中,5不能被表示为同行同列的两数字之和,因此输出“No”.

 

分析:

空间和时间都很充足,直接无脑暴力算_(:з」∠)_

特别注意的是如果输入所有的数字都是1,也应该输出“Yes”.

 

丑陋的AC代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cmath>
 5 
 6 using namespace std;
 7 int map[60][60];
 8 bool flag,ok = true;
 9 
10 int main()
11 {
12     int n;
13     scanf("%d",&n);
14     for(int i = 1;i <= n;i ++)
15         for(int j = 1;j <= n;j ++)
16         {
17             scanf("%d",&map[i][j]);
18             if(map[i][j] != 1)
19                 ok = false;
20         }
21     if(ok)
22     {
23         printf("Yes\n");
24         return 0;
25     }
26     for(int i = 1;i <= n;i ++)
27         for(int j = 1;j <= n;j ++)
28         {
29             if(map[i][j] == 1)
30                 continue;
31             else
32             {
33                 flag = false;
34                 for(int a = 1;a <= n;a ++)
35                 {//固定列 
36                     if(a == j)    continue;
37                     for(int b = 1;b <= n;b ++)
38                     {
39                         if(b == i)    continue;
40                         if(map[i][a] + map[b][j] == map[i][j])
41                             {    flag = true;break;    }
42                     }
43                     if(flag)    break;
44                 }
45                 if(!flag)
46                 {
47                     printf("No\n");
48                     return 0;
49                 }
50             }
51         }
52     if(flag) printf("Yes\n");
53     return 0;
54 }

以上是关于Codeforces 821A Okabe and Future Gadget Laboratory 题解的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces 821C Okabe and Boxes(模拟)

Codeforces 821E Okabe and El Psy Kongroo

cf 821E Okabe and El Psy Kongroo(矩阵快速幂)

Codeforce821E Okabe and El Psy Kongroo

CF821C Okabe and Boxes

CF821B Okabe and Banana Trees