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 ...
随机推荐
- Kotlin新语言简介和快速入门知识点
Kotlin新语言简介和快速入门知识点 简介:Kotlin是最近由JetBrains发布的一种基于JVM的编程语言,已经被Google宣布为开发Android App的一级语言Kotlin有着与Jav ...
- linux chkconfig 管理服务开机自启动
chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:chkconfig [--ad ...
- 解决input标签placeholder属性浏览器兼容性问题的一种方法
为文本框input添加文字输入提示,H5为input提供了一个placeholder属性.在支持H5的浏览器中,用此属性设置输入提示,简单方便,但是对于IE8以下版本,都不支持placeholder属 ...
- html模板生成静态页面及模板分页处理
它只让你修改页面的某一部分,当然这"某一部分"是由你来确定的.美工先做好一个页面,然后我们把这个页面当作模板(要注意的是这个模板就没必要使用EditRegion3这样的代码了,这种 ...
- 20145206邹京儒MSF基础应用
20145206邹京儒MSF基础应用 一.MS08_067漏洞渗透攻击实践 实验前准备 1.两台虚拟机,其中一台为kali,一台为windows xp sp3(英文版). 2.在VMware中设置两台 ...
- 20165211 2017-2018-2 《Java程序设计》第7周学习总结
20165211 2017-2018-2 <Java程序设计>第7周学习总结 教材学习内容总结 本周,我学习了书本上第十一章的内容,以下是我整理的主要知识. 第十一章 JDBC和MySQL ...
- Python3基础 file for+文件指针 读取txt文本并 一行一行的输出(高效率)
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- Spring的面向切面
Spring的面向切面 在应用开发中,有很多类似日志.安全和事务管理的功能.这些功能都有一个共同点,那就是很多个对象都需要这些功能.复用这些通用的功能的最简单的方法就是继承或者委托.但是当应用规模达到 ...
- (转)MyBatis & MyBatis Plus
(二期)3.mybatis与mybatis plus [课程三]mybatis ...运用.xmind0.1MB [课程三]mybatis...机制.xmind0.2MB [课程三]mybatis与j ...
- perl入门知识(2)
交互式编程你可以在命令行中使用 -e 选项来输入语句来执行代码,实例如下:$ perl -e 'print "Hello World\n"'输入以上命令,回车后,输出结果为:Hel ...