Codeforces 821A Okabe and Future Gadget Laboratory 題解
阿新 • • 發佈:2017-07-02
can printf else std bre 中間 sub 同一行 clu s和t,使得ax, y = ax, s + at, y,其中ai, j 表示第i行第j列的整數。
).
此文為博主原創題解,轉載時請通知博主,並把原文鏈接放在正文醒目位置。
題目鏈接:http://codeforces.com/problemset/problem/821/A
時間限制:2秒
空間限制:256M
Okabe要改進他的實驗室。實驗室用一個n*n的正方形網格表示(n為正整數)。他認為,一個“好實驗室”的網格內每一個不等於1的數字都可以用同一行和同一列的某個數字之和表示。換句話說,對於任意x,y(1 ≤ x, y ≤ n 且 ax, y ≠ 1,),存在兩個數
幫助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可以表示為2和4的和。同樣地,網格中所有非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 題解