# cf#369-Chris and Magic Square-大模拟+trick

mdzz这题太坑，最后答案要是正数，

#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <queue>
#include <map>
#include <set>
#include <vector>
#include <iostream>
using namespace std;

const double pi=acos(-1.0);
double eps=0.000001;
typedef long long  ll;

ll mp[505][505];
ll sumx[505];
ll sumy[505];
ll dui1,dui2;
int  main()
{
ll n;
cin>>n;
ll val;
ll mx,my;
for (ll i=1; i<=n; i++)
{
for (ll j=1; j<=n; j++)
{
scanf("%lld",&mp[i][j]);
if (mp[i][j]==0)
{
mx=i,my=j;
}
}
}
if (n==1)
{
printf("1\n");
return 0;
}
for (ll i=1; i<=n; i++)
{
for (ll j=1; j<=n; j++)
{
sumx[i]+=mp[i][j];
sumy[j]+=mp[i][j];
if (i==j) dui1+=mp[i][j];
if (i+j==n+1) dui2+=mp[i][j];
}
}

if (mx!=my &&  mx+my!=n+1 )
{
ll flag=0,pos;
for (ll i=1; i<=n; i++)
{
if (sumx[i]!=dui1) flag++,pos=i;
}
if (flag!=1)
{
printf("-1\n");
return 0;
}
val=dui1-sumx[mx];
sumy[my]+=val;
flag=1;
for (ll i=1; i<=n; i++)
{
if (sumy[i]!=dui1) flag=0;
}
if (dui2!=dui1) flag=0;
if (flag);
else val=-1;
//printf("-1\n");
}
else  if ((n%2&& mx==my&&mx!=n/2+1)||(n%2==0 && mx==my))
{
ll aa;
for (aa=1; aa<=n; aa++)
if (aa!=mx) break;
val=sumx[aa]-dui1;
sumx[mx]+=val;
sumy[my]+=val;
dui1+=val;
ll  flag=1;
for (ll i=1; i<=n; i++)
{
if (sumy[i]!=sumx[aa]) flag=0;
}
for (ll i=1; i<=n; i++)
{
if (sumx[i]!=sumx[aa]) flag=0;
}
if (dui2!=sumx[aa]) flag=0;
if (flag);
else val=-1;
}
else if (mx+my==n+1&& !(mx==n/2+1&&my==n/2+1))
{

ll aa;
for (aa=1; aa<=n; aa++)
if (aa!=mx) break;
val=sumx[aa]-dui2;
sumx[mx]+=val;
sumy[my]+=val;
dui2+=val;
ll flag=1;
for (ll i=1; i<=n; i++)
{
if (sumy[i]!=sumx[aa]) flag=0;
}
for (ll i=1; i<=n; i++)
{
if (sumx[i]!=sumx[aa]) flag=0;
}
if (dui1!=sumx[aa]) flag=0;
if (flag);
else val=-1;
}
else
{

ll flag=1;
for (ll i=1; i<=n/2; i++)
if (sumx[i]!=sumx[1]) flag=0;
for (ll i=n/2+2; i<=n; i++)
if (sumx[i]!=sumx[1]) flag=0;
for (ll i=1; i<=n/2; i++)
if (sumy[i]!=sumx[1]) flag=0;
for (ll i=n/2+2; i<=n; i++)
if (sumy[i]!=sumx[1]) flag=0;
val=sumx[1]-dui1;
val=sumx[1]-dui1;
dui1+=val;
dui2+=val;
if (dui2!=sumx[1]) flag=0;
if (flag);
else val=-1;
}
if (val<=0)
val=-1;
printf("%lld\n",val);

return 0;

}

• 本文已收录于以下专栏：

Note: To advance to the next rounds, you will need to score 25 points. Solving just this problem wil...
• buxizhizhou530
• 2014年04月13日 15:53
• 949

## Problem A. Magic Trick解答

• ZiJinShi
• 2014年04月14日 21:45
• 1276

## UVA10978 Let's Play Magic!【模拟】

You have seen a card magic trick named “Spelling Bee”. The process goes as follows:   1. The magici...
• tigerisland45
• 2018年01月17日 08:36
• 162

## Codechef Magic Trick

• Zhuhuangjian
• 2014年01月16日 21:40
• 671

## C. Magic Trick

time limit per test 1 second memory limit per test 256 megabytes input standard input ...
• S_Black
• 2014年08月19日 10:12
• 453

## 大模拟

• cquzhengdayday
• 2016年11月29日 13:41
• 205

## 遇到过的python trick

1. 遇到 ValueError: numpy.dtype has the wrong size, try recompiling. Expected 88, got 96 导致该问题的原因是num...
• kxalpah
• 2017年03月04日 13:53
• 319

## codeforces 452 C. Magic Trick

• SZULiuGuoJie
• 2016年03月23日 21:40
• 127

## 深度学习——训练trick

http://yyue.blogspot.com/2015/01/a-brief-overview-of-deep-learning.htmlhttp://cs231n.github.io/neura...
• VictoriaW
• 2017年05月29日 10:00
• 744

## Codeforces 452C Magic Trick (概率)

#include #include #include #include #include #include #include #include #include #include ...
• u013654696
• 2016年06月07日 14:13
• 183

举报原因： 您举报文章：cf#369-Chris and Magic Square-大模拟+trick 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)