CF 711B - Chris and Magic Square
挺简单的一道题,但是做的时候没想好就开始写代码了,导致迷之WA,还是要多练习啊。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <set>
#define LL long long int
using namespace std;
LL Map[][];
int main() {
cin.sync_with_stdio(false);
int n;
while(cin>>n)
{
int x,y;
LL sumy[],sumx[],sum[]={,};
for(int i=;i<n;i++)
{
sumy[i]=sumx[i]=;
for(int j=;j<n;j++)
{
cin>>Map[i][j];
if(Map[i][j]==)
y=i,x=j;
}
}
//特判1
if(n==)
{
cout<<<<endl;
continue;
}
for(int i=;i<n;i++)
for(int j=;j<n;j++)
{
sumx[j]+=Map[i][j],sumy[i]+=Map[i][j];
if(i==j)
sum[]+=Map[i][j];
if(i==(n-j-))
sum[]+=Map[i][j];
}
set<LL> s;
set<LL>::iterator it;
LL flag=,more=,less=;
s.insert(sum[]),s.insert(sum[]);
for(int i=;i<n;i++)
s.insert(sumx[i]),s.insert(sumy[i]);
if(s.size()>)//超过两种就GG
flag=;
if(s.size()==)//保证和0点关联的都是较小的反之较大
{
it=s.begin();
more=*it;
it++;
less=*it;
if(more<less)
swap(more,less);
for(int i=;i<n;i++)
{
if(i==x)
{
if(sumx[i]!=less)
flag=;
}
else
if(sumx[i]!=more)
flag=;
if(i==y)
{
if(sumy[i]!=less)
flag=;
}
else
if(sumy[i]!=more)
flag=;
}
if(x==y)
{
if(sum[]!=less)
flag=;
}
else
if(sum[]!=more)
flag=;
if(x==n-y-)
{
if(sum[]!=less)
flag=;
}
else
if(sum[]!=more)
flag=;
}
else if(s.size()==)//0点必须在中心
{
if(n%!=||x!=n/||y!=n/)
flag=;
}
if(flag)
cout<<more-less<<endl;
else
cout<<-<<endl;
}
return ;
}
CF 711B - Chris and Magic Square的更多相关文章
- codeforces 711B - Chris and Magic Square(矩阵0位置填数)
题目链接:http://codeforces.com/problemset/problem/711/B 题目大意: 输入 n ,输入 n*n 的矩阵,有一个占位 0 , 求得将 0 位置换成其他的整数 ...
- CodeForces 711B Chris and Magic Square (暴力,水题)
题意:给定n*n个矩阵,其中只有一个格子是0,让你填上一个数,使得所有的行列的对角线的和都相等. 析:首先n为1,就随便填,然后就是除了0这一行或者这一列,那么一定有其他的行列是完整的,所以,先把其他 ...
- 【模拟】Codeforces 711B Chris and Magic Square
题目链接: http://codeforces.com/problemset/problem/711/B 题目大意: N*N的矩阵,有且只有一个0,求要把这个矩阵变成幻方要填什么正数.无解输出-1.幻 ...
- CodeForces 711B Chris and Magic Square
简单题. 找一个不存在$0$的行,计算这行的和(记为$sum$),然后就可以知道$0$那个位置应该填的数字(记为$x$). 如果$x<=0$,那么无解,否则再去判断每一行,每一列以及两个斜对角的 ...
- 711B - Chris and Magic Square 模拟
题目大意:在num[i][j]==0处填一个数使每行,每列,对角线的和相同,若果有多种答案输出一种. 题目思路:模拟 #include<iostream> #include<algo ...
- codeforces 711B B. Chris and Magic Square(水题)
题目链接: B. Chris and Magic Square 题意: 问在那个空位子填哪个数可以使行列对角线的和相等,就先找一行或者一列算出那个数,再验证是否可行就好; AC代码: #include ...
- 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 ...
- 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 ...
- 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 ...
随机推荐
- 【Redis学习之十】Redis集群维护
Redis集群增删节点部署环境 redis-3.0.0 VM虚拟机redhat6.5-x64:192.168.1.201.192.168.1.202.192.168.1.203. ...
- 数据仓库基础(九)Informatica小技巧(1)
本文转载自:http://www.cnblogs.com/evencao/p/3148373.html link path:查看某个字段的来源去处,非常有参考的价值.右击你想要看的字段,选择 sele ...
- linux常用命令:find 命令参数详解
find一些常用参数的一些常用实例和一些具体用法和注意事项. 1.使用name选项: 文件名选项是find命令最常用的选项,要么单独使用该选项,要么和其他选项一起使用. 可以使用某种文件名模式来匹配 ...
- excel选择元角分下拉菜单选择框自动变更数字
excel选择元角分下拉菜单选择框自动变更数字 (M2列),数据-->数据有效性-->在“允许”栏中选择序列-->在“来源”栏中输入:分,角,元单位倍数公式(M4列):=IF(M2= ...
- P2486 [SDOI2011]染色
P2486 [SDOI2011]染色 树链剖分 用区间修改线段树维护 对于颜色段的计算:sum[o]=sum[lc]+sum[rc] 因为可能重复计算,即左子树的右端点和右子树的左端点可能颜色相同 多 ...
- 07: Django 使用ldap登录、注销等
目录:Django其他篇 01:Django基础篇 02:Django进阶篇 03:Django数据库操作--->Model 04: Form 验证用户数据 & 生成html 05:Mo ...
- 第八篇:支持向量机 (SVM)分类器原理分析与基本应用
前言 支持向量机,也即SVM,号称分类算法,甚至机器学习界老大哥.其理论优美,发展相对完善,是非常受到推崇的算法. 本文将讲解的SVM基于一种最流行的实现 - 序列最小优化,也即SMO. 另外还将讲解 ...
- Executor简析
本文只做简要解析,实际情形下我们多用spring的taskExecutor 直接使用new Thread()创建线程的缺点: 1.new Thread()耗费性能 2.调用new Thread()创建 ...
- 20145302张薇《课程设计》数据恢复——WinHex实践
20145302张薇<课程设计>数据恢复--WinHex实践 实践内容 使用WinHex破损一个U盘 使用WinHex通过DBR备份数据来修复已损坏U盘 实践详细步骤 1.准备一个文件格式 ...
- Tensorflow游乐场
昨天,Google发布了Tensorflow游乐场.Tensorflow是Google今年推出的机器学习开源平台.而有了Tensorflow游乐场,我们在浏览器中就可以训练自己的神经网络,还有酷酷的图 ...