711B - Chris and Magic Square 模拟
题目大意:在num[i][j]==0处填一个数使每行,每列,对角线的和相同,若果有多种答案输出一种。
题目思路:模拟
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<stdio.h>
#include<stdlib.h>
#include<queue>
#include<math.h>
#include<map>
#define INF 0xffffffff
#define MAX 505
#define Temp 1000000000
#define MOD 1000000007
#define LL long long
#define PI acos(-1) using namespace std; long long num[MAX][MAX]; long long change(int n,int x,int y)
{
long long k=,sum1=,sum2=,sum3=,sum4=,sum=;
int op1=,op2=;
for(int i=; i<=n; i++)
{
if(i!=x)
{
for(int j=; j<=n; j++)
k+=num[i][j];
break;
}
}
for(int i=; i<=n; i++)
{
sum=;
if(i==x)
{
for(int j=; j<=n; j++)
sum1+=num[i][j];
continue;
}
for(int j=; j<=n; j++)
{
sum+=num[i][j];
}
if(sum!=k)
return -;
} for(int i=; i<=n; i++)
{
sum=;
if(i==y)
{
for(int j=; j<=n; j++)
sum2+=num[j][i];
continue;
}
for(int j=; j<=n; j++)
{
sum+=num[j][i];
}
if(sum!=k)
return -;
}
if(x==y && x==(n+)/ && n%!=)
{
for(int i=; i<=n; i++)
{
sum3+=num[i][i];
sum4+=num[i][n-i+];
}
long long a=k-sum1;
long long b=k-sum2;
long long c=k-sum3;
long long d=k-sum4;
if(a!=b || a!=c || a!=d || b!=c || b!=d || c!=d)
return -;
else if(a<)
return -;
return a;
}
for(int i=; i<=n; i++)
{
if(num[i][i]==)
{
op1=;
}
sum3+=num[i][i];
if(num[i][n+-i]==)
{
op2=;
}
sum4+=num[i][n+-i];
}
if(op1== && sum3!=k)
return -;
if(op2== && sum4!=k)
return -;
if(op1)
{
long long c=k-sum3;
long long a=k-sum1;
long long b=k-sum2;
if(a!=b || a!=c || b!=c)
return -;
else if(a < )
return -;
return a;
}
if(op2)
{
long long c=k-sum4;
long long a=k-sum1;
long long b=k-sum2;
if(a!=b || a!=c || b!=c)
return -;
else if(a < )
return -;
return a;
}
long long a=k-sum1;
long long b=k-sum2;
if(a!=b || (a==b && a<))
return -;
return a;
} int main()
{
int n,x,y;
while(scanf("%d",&n)!=EOF)
{
memset(num,,sizeof(num));
for(int i=; i<=n; i++)
{
for(int j=; j<=n; j++)
{
scanf("%lld",&num[i][j]);
if(num[i][j]==)
{
x=i;
y=j;
}
}
}
if(n==)
{
printf("2\n");
continue;
}
long long ok=change(n,x,y);
printf("%lld\n",ok);
}
return ;
}
711B - Chris and Magic Square 模拟的更多相关文章
- 【模拟】Codeforces 711B Chris and Magic Square
题目链接: http://codeforces.com/problemset/problem/711/B 题目大意: N*N的矩阵,有且只有一个0,求要把这个矩阵变成幻方要填什么正数.无解输出-1.幻 ...
- 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
简单题. 找一个不存在$0$的行,计算这行的和(记为$sum$),然后就可以知道$0$那个位置应该填的数字(记为$x$). 如果$x<=0$,那么无解,否则再去判断每一行,每一列以及两个斜对角的 ...
- CF 711B - Chris and Magic Square
挺简单的一道题,但是做的时候没想好就开始写代码了,导致迷之WA,还是要多练习啊. #include <iostream> #include <cstdio> #include ...
- 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 ...
随机推荐
- Ubuntu 14.04 配置FTP
配置Ubuntu 14.04的FTP服务,通过Windows远程访问Ubuntu 14.04的同时,可以实现windows和Ubuntu之间的文件交换传输.在多用户环境下,每一个用户都可以通过自己的帐 ...
- 6、iOS快速枚举
今天在写程序的时候想在当前视图跳转的时候释放掉当前视图上面add的一些子视图.因为add的子视图有些是在别的类里面add进来的,当前页面不知道自己当前有哪几个类型的子视图.这样,我就想到了用循环遍历来 ...
- 最受欢迎的iOS第三方SDK
http://www.raywenderlich.com/forums/viewtopic.php?t=4496
- NYOJ-47 过河问题(贪心)
过河问题 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边.如果不借助手电筒的话,大家是无论如何也不敢过桥去的 ...
- Python subprocess + timeout的命令执行
Popen对象 poll() 判断是否执行完毕,执行完毕返回0,未执行完毕返回None terminate() 终止进程发送SIGTERM信号 raise 自定义返回错误 import time im ...
- opencv3.1自带demo的介绍和运行操作。转载
opencv3.1自带demo的介绍和运行操作. 下列实验基本都试过,有些需要根据自己的电脑修改一些路径或者调试参数. 值得注意的是,控制台程序输入有时候要在图像所在的窗口输入相应的指令.我的电脑上安 ...
- 没事抽空学——c语言指针操作基础概念
指针基础 理解指针的最佳方法是画图,学习使用基本指针,不要产生空指针. 存储控件分配 存储控件分配是指在内存预留空间的过程.就像一个虚拟菜谱一样,指针对应菜名,其所指的内存空间中的数据对应实际的菜. ...
- Android Studio Gradle更新的解决办法
环境: Win7_64旗舰版.Android Studio2.1.1 问题描述: 在打开Android Studio项目的时候,会下载项目对应版本的gradle,由于是国外网站导致更新较慢,该版本是在 ...
- 利用commons-io.jar包中FileUtils和IOUtils工具类操作流及文件
1.String IOUtils.toString(InputStream input),传入输入流对象,返回字符串,有多重重载,可按需要传参 用例: @Test public void showIn ...
- HDU - 2290 Find the Path(最短路)
HDU - 2290 Find the Path Time Limit: 5000MS Memory Limit: 64768KB 64bit IO Format: %I64d & % ...