【模拟】Codeforces 711B Chris and Magic Square
2016-08-30 14:52
316 查看
题目链接:
http://codeforces.com/problemset/problem/711/B
题目大意:
N*N的矩阵,有且只有一个0,求要把这个矩阵变成幻方要填什么正数。无解输出-1。幻方是每一行每一列和两条主对角线的和都相等。
题目思路:
【模拟】
题目没看清外加爆intWA了好多次。。罪过。
求出每一行每一列和对角线的和,为0的那个用随意一行的和扣去0的那一行就可以得到。只要验证其余的是否都相等即可。
View Code
http://codeforces.com/problemset/problem/711/B
题目大意:
N*N的矩阵,有且只有一个0,求要把这个矩阵变成幻方要填什么正数。无解输出-1。幻方是每一行每一列和两条主对角线的和都相等。
题目思路:
【模拟】
题目没看清外加爆intWA了好多次。。罪过。
求出每一行每一列和对角线的和,为0的那个用随意一行的和扣去0的那一行就可以得到。只要验证其余的是否都相等即可。
// //by coolxxx //#include<bits/stdc++.h> #include<iostream> #include<algorithm> #include<string> #include<iomanip> #include<map> #include<stack> #include<queue> #include<set> #include<bitset> #include<memory.h> #include<time.h> #include<stdio.h> #include<stdlib.h> #include<string.h> //#include<stdbool.h> #include<math.h> #define min(a,b) ((a)<(b)?(a):(b)) #define max(a,b) ((a)>(b)?(a):(b)) #define abs(a) ((a)>0?(a):(-(a))) #define lowbit(a) (a&(-a)) #define sqr(a) ((a)*(a)) #define swap(a,b) ((a)^=(b),(b)^=(a),(a)^=(b)) #define mem(a,b) memset(a,b,sizeof(a)) #define eps (1e-8) #define J 10 #define mod 1000000007 #define MAX 0x7f7f7f7f #define PI 3.14159265358979323 #define N 504 using namespace std; typedef long long LL; int cas,cass; int n,m,lll,ans; LL a ; LL sum ,tot ; int sx,sy; bool judge() { int i,j; LL ll,c; if(sx==1) a[sx][sy]=sum[2]-sum[sx]; else a[sx][sy]=sum[1]-sum[sx]; sum[sx]+=a[sx][sy],tot[sy]+=a[sx][sy]; c=sum[1]; for(i=1;i<=n;i++) if(sum[i]!=c) return 0; for(j=1;j<=n;j++) if(tot[j]!=c) return 0; for(i=1,ll=0;i<=n;i++) ll+=a[i][i]; if(ll!=c)return 0; for(i=1,ll=0;i<=n;i++) ll+=a[i][n+1-i]; if(ll!=c)return 0; return 1; } int main() { #ifndef ONLINE_JUDGE // freopen("1.txt","r",stdin); // freopen("2.txt","w",stdout); #endif int i,j,k; // for(scanf("%d",&cass);cass;cass--) // for(scanf("%d",&cas),cass=1;cass<=cas;cass++) // while(~scanf("%s",s+1)) while(~scanf("%d",&n)) { mem(sum,0);mem(tot,0); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { scanf("%I64d",&a[i][j]); if(a[i][j]==0)sx=i,sy=j; sum[i]+=a[i][j]; tot[j]+=a[i][j]; } } if(n==1) { puts("1"); continue; } if(judge() && a[sx][sy]>0)printf("%I64d\n",a[sx][sy]); else puts("-1"); } return 0; } /* // // */
View Code
相关文章推荐
- CodeForces - 658A Bear and Reverse Radewoosh (模拟)水
- CodeForces 731B-Coupons and Discounts(贪心 模拟)
- codeforces 931B - World Cup 模拟
- 【CodeForces】702D - Road to Post Office 模拟,初中数学题
- [codeforces-315D div2]模拟
- CodeForces 493B Vasya and Wrestling 【模拟】
- CodeForces 676 B. Pyramid of Glasses(模拟)
- 【打CF,学算法——二星级】CodeForces 689A Mike and Cellphone (模拟)
- Codeforces 230C Shifts(模拟+展开字符串)
- Codeforces 149B Martian Clock【模拟】
- CodeForces 615C Running Track【暴力模拟】
- Codeforces 716B Complete the Word【模拟】 (Codeforces Round #372 (Div. 2))
- Codeforces 691B. s-palindrome(模拟)
- Codeforces 670E Correct Bracket Sequence Editor (list模拟)
- CodeForces 2A - Winner(模拟)
- CodeForces - 767A Snacktower(模拟+思维)
- CodeForces - 670B Game of Robots (模拟)水
- CodeForces - 670D2 Magic Powder - 2 (二分&模拟)
- Codeforces - 362 (Div. 2)B - Barnicle(模拟)
- codeforces 157D 模拟