牛客国庆集训派对Day6 B-Board

链接:https://www.nowcoder.com/acm/contest/206/B
来源:牛客网
 

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 1048576K,其他语言2097152K
64bit IO Format: %lld

题目描述

恬恬有一个nx n的数组。她在用这个数组玩游戏:
开始时,数组中每一个元素都是0。
恬恬会做某些操作。在一次操作中,她可以将某一行的所有元素同时加上一个值,也可以将某一列的所有元素同时加上一个值。
在几次操作后,一个元素被隐藏了。你能帮助她回忆隐藏的数是几吗?

输入描述:

第一行一个整数n(1≤ n≤ 1000)。
接下来n行每行n个整数表示数组a。
第(i+1)行的第j个元素表示aij(aij=-1或0≤ aij ≤ 10000)。-1表示隐藏的元素。

输出描述:

仅一个整数表示答案。

示例1

输入

3
1 2 1
0 -1 0
0 1 0

输出

1

思路

找到数值为-1的位置,记录下来所在行列,画个矩阵找下规律就出来了

AC代码

/*
* @Author: WZY
* @Date:   2018-10-09 16:36:48
* @Last Modified by:   WZY
* @Last Modified time: 2018-10-09 16:51:40
*/
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <math.h>
#include <limits.h>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#include <set>
#include <string>
#include <time.h>
#define ll long long
#define ull unsigned long long
#define ms(a) memset(a,0,sizeof(a))
#define pi acos(-1.0)
#define INF 0x7f7f7f7f
#define lson o<<1
#define rson o<<1|1
#define debug(...) cerr<<"["<<#__VA_ARGS__":"<<(__VA_ARGS__)<<"]"<<"
"
const double E=exp(1);
const int maxn=1e3+10;
const int mod=1e9+7;
using namespace std;
int a[maxn][maxn];
int main(int argc, char const *argv[])
{
	ios::sync_with_stdio(false);
	#ifndef ONLINE_JUDGE
	    freopen("in.txt", "r", stdin);
	    freopen("out.txt", "w", stdout);
	    double _begin_time = clock();
	#endif
	int n;
	cin>>n;
	int x,y;
	for(int i=0;i<n;i++)
		for(int j=0;j<n;j++)
		{
			cin>>a[i][j];
			if(a[i][j]==-1)
				x=i,y=j;
		}
	if(x&&y)
	{
		cout<<a[x][0]+a[0][y]-a[0][0]<<endl;
		return 0;
	}
	else
	{
		int res;
		if(x==0&&y)
			res=a[x+1][y]-a[1][0]+a[0][0];
		else if(x&&y==0)
			res=a[x][y+1]-a[0][1]+a[0][0];
		else
			res=a[0][1]+a[1][0]-a[1][1];
		cout<<res<<endl;
	}
	#ifndef ONLINE_JUDGE
	    long _end_time = clock();
	    printf("time = %lf ms.", _end_time - _begin_time);
	#endif
	return 0;
}
原文地址:https://www.cnblogs.com/Friends-A/p/10324347.html