题目链接:http://codeforces.com/problemset/problem/711/B

题目大意:

  输入 n ,输入 n*n 的矩阵,有一个占位 0 , 求得将 0 位置换成其他的整数 使得矩阵 行列斜 和全部相等。

代码状态:

一把辛酸泪

2016.09.24 8:14 再次更新  DOWN 【昨天晚上的‘杯具’要谨记,做题要看懂题,看清题的要求再做,切记、切记、切记】

补解题思路:

1.

 1.1 先特殊判断 n 是否==1,如果等于 1 则直接输出 1 即可

 1.2 如果 n > 1 判断 0 的位置在哪个位置,找一个要填入到0位置的数。

    如果 0 在第一行,那么用第二行的和 减去 第一行的和,便是要填入的值.

    如果 0 在最后一行,那么用倒数第二行的和 减去 最后一行的和,便是要填入的值.

    其他的 则 0 在中间位置 ,那么可以用 前一行或者后一行的和 减去 0 所在的和,便是要填入的值.

    (用列减也可以)

    【看清题意,如果填入的值 <1 则输出 -1】

2.

  将要填入的值填到 0 的位置 进行全部的扫描判断即可。全盘的扫描不在解释。

AC Code:

 #include<bits/stdc++.h>
using namespace std;
const int N=+;
typedef long long ll;
ll na[N][N];
int check(int n)
{
ll ans=,ans1=;
int i,j;
for(i=; i<=n; i++)
ans+=na[][i],ans1+=na[i][];
if(ans!=ans1)
return ;
ans1=;
ll ans2=;
for(i=; i<=n; i++)
{
for(j=; j<=n; j++)
ans1+=na[i][j], ans2+=na[j][i];
if(ans!=ans2||ans1!=ans2||ans!=ans1)
return ;
ans1=ans2=; }
ans1=ans2=;
for(i=; i<=n; i++)
{
for(j=; j<=n; j++)
if(i==j)
ans1+=na[i][j],ans2+=na[i][n-i+];
}
if(ans!=ans2||ans1!=ans2||ans!=ans1)
return ;
return ;
}
int main()
{
int n;
while(~scanf("%d",&n))
{
int i,j;
if(n==)
{
scanf("%d",&n);
printf("1\n");
continue;
}
int x,y;
for(i=; i<=n; i++)
for(j=; j<=n; j++)
{
scanf("%d",&na[i][j]);
if(na[i][j]==)x=i,y=j;
}
ll ans=,ans1=;
if(x==)
{
for(i=; i<=n; i++)
ans+=na[][i],ans1+=na[][i];
na[x][y]=ans1-ans;
}
else if(x==n)
{
for(i=; i<=n; i++)
ans+=na[n][i],ans1+=na[n-][i];
na[x][y]=ans1-ans;
}
else
{
for(i=; i<=n; i++)
ans+=na[x][i],ans1+=na[x-][i];
na[x][y]=abs(ans1-ans);
} if(check(n))
printf("%I64d\n",na[x][y]<?-:na[x][y]);
else printf("-1\n");
}
return ;
}

codeforces 711B - Chris and Magic Square(矩阵0位置填数)的更多相关文章

  1. 【模拟】Codeforces 711B Chris and Magic Square

    题目链接: http://codeforces.com/problemset/problem/711/B 题目大意: N*N的矩阵,有且只有一个0,求要把这个矩阵变成幻方要填什么正数.无解输出-1.幻 ...

  2. CodeForces 711B Chris and Magic Square (暴力,水题)

    题意:给定n*n个矩阵,其中只有一个格子是0,让你填上一个数,使得所有的行列的对角线的和都相等. 析:首先n为1,就随便填,然后就是除了0这一行或者这一列,那么一定有其他的行列是完整的,所以,先把其他 ...

  3. CodeForces 711B Chris and Magic Square

    简单题. 找一个不存在$0$的行,计算这行的和(记为$sum$),然后就可以知道$0$那个位置应该填的数字(记为$x$). 如果$x<=0$,那么无解,否则再去判断每一行,每一列以及两个斜对角的 ...

  4. 711B - Chris and Magic Square 模拟

    题目大意:在num[i][j]==0处填一个数使每行,每列,对角线的和相同,若果有多种答案输出一种. 题目思路:模拟 #include<iostream> #include<algo ...

  5. CF 711B - Chris and Magic Square

    挺简单的一道题,但是做的时候没想好就开始写代码了,导致迷之WA,还是要多练习啊. #include <iostream> #include <cstdio> #include ...

  6. codeforces 711B B. Chris and Magic Square(水题)

    题目链接: B. Chris and Magic Square 题意: 问在那个空位子填哪个数可以使行列对角线的和相等,就先找一行或者一列算出那个数,再验证是否可行就好; AC代码: #include ...

  7. Codeforces Round #369 (Div. 2) B. Chris and Magic Square 水题

    B. Chris and Magic Square 题目连接: http://www.codeforces.com/contest/711/problem/B Description ZS the C ...

  8. Codeforces Round #369 (Div. 2) B. Chris and Magic Square (暴力)

    Chris and Magic Square 题目链接: http://codeforces.com/contest/711/problem/B Description ZS the Coder an ...

  9. Chris and Magic Square CodeForces - 711B

    ZS the Coder and Chris the Baboon arrived at the entrance of Udayland. There is a n × n magic grid o ...

随机推荐

  1. ETL利器Kettle实战应用解析系列一【Kettle使用介绍】

    本系列文章主要索引如下: 一.ETL利器Kettle实战应用解析系列一[Kettle使用介绍] 二.ETL利器Kettle实战应用解析系列二 [应用场景和实战DEMO下载] 三.ETL利器Kettle ...

  2. 【SPOJ 694】Distinct Substrings 不相同的子串的个数

    不会FQ啊,没法评测啊,先存一下代码QAQ 2016-06-16神犇Menci帮我测过AC了,谢谢神犇Menci QwQ #include<cstdio> #include<cstr ...

  3. PyQt类库介绍

    安装完PyQt后我们去看看这个库里面有些什么cd /usr/lib/python3/dist-packages/PyQt5/  && ls都是些.so的动态链接库,这就是为什么我们在安 ...

  4. 谈谈MVC项目中的缓存功能设计的相关问题

    本文收集一些关于项目中为什么需要使用缓存功能,以及怎么使用等,在实际开发中对缓存的设计的考虑 为什么需要讨论缓存呢? 缓存是一个中大型系统所必须考虑的问题.为了避免每次请求都去访问后台的资源(例如数据 ...

  5. 使用AOP 实现多数据源 切换

    多数据源的实现,这里就来个实例吧 1.在 spring 的配置文件中数据源信息 <?xml version="1.0" encoding="UTF-8"? ...

  6. 100200H

    这是个bfs 首先建图,先从终点bfs求出每点距离,然后从起点开始,确定初始方向:某点和自己相邻距离比自己小1就是 然后就先贪心和上次一样的方向,如果不能走,就找出一个方向,把自己当前方向改掉,重复过 ...

  7. Mysql-linux下密码修改,忘记密码修改,超级管理用户修改

    未忘记密码 方法一:在mysql系统外,使用mysqladmin # mysqladmin -u root -p password "test123"Enter password: ...

  8. 【hdu 5918】Sequence I(KMP)

    给定两个数字序列,求a序列中每隔p个构成的p+1个序列中共能匹配多少个b序列. 例如1 1 2 2 3 3 每隔1个的序列有两个1 2 3 kmp,匹配时每次主串往前p个,枚举1到p为起点. 题目 # ...

  9. Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat)

    在windows下使用python时,比如编译python的一个包,会遇到这个问题: error: Microsoft Visual C++ 9.0 is required (Unable to fi ...

  10. HDU2298 Toxophily

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...