Codeforces Round #369 (Div. 2) A B 两水题 编码能力

原创 2016年08月30日 13:10:10

A题:




水。。直接代码:

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
string save[1010];
int main(){
    int n,i,j;
    scanf("%d",&n);
    string t;
    int flag = false;
    for(i=1;i<=n;i++){
        cin>>save[i];
        if((save[i][0]=='O'&&save[i][1]=='O')||(save[i][3]=='O'&&save[i][4]=='O')){
            if(!flag){
                if(save[i][0]=='O'&&save[i][1]=='O'){
                    save[i][0]='+';
                    save[i][1]='+';
                }else{
                    save[i][3]='+';
                    save[i][4]='+';
                }
            }
            flag = true;
        }
    }
    if(flag){
        printf("YES\n");
        for(i=1;i<=n;i++){
            cout<<save[i]<<endl;
        }
    }else{
        printf("NO\n");
    }
    return 0;
}
B题:



题目给一个n*n的矩阵,其中某个位置的数为0,这事我们要填的位置,保证其它位置的数字都为正整数。我们填的数字也必须为正整数,填上数字后要求这个矩阵每一行、每一列、两条对角线的的和要想等,如果不存在这样的数字,就输出-1。

题意很明确。。。是自己的编码能力不足。。。

首先先检查除去含零的列和行还有对角线是否相等,如果不等则直接判-1.

然后随便找一行来对比含0行找出要填的数字,填上后再检查一遍这个矩阵是否合法

。。。。感觉自己好腊鸡啊。。什么时候div能稳做三题呢。。

下面代码:

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
const int maxn=510;
const long long prime = 10000019;
int n,i,j;
long long save[maxn][maxn];
bool judge(){
    long long now=0,sum=0;
    bool flag = true;
    bool can=true;
    for(i=1;i<=n;i++){
        if(can){
            now = sum;
        }
        sum = 0;
        can = true;
        for(j=1;j<=n;j++){
            if(save[j][i]==0){
                can = false;
            }
            sum = (sum+save[j][i])%prime;
        }
        if(can){
            if(now!=sum&&now!=0){
                flag =false;
                return false;
            }
        }
    }
    return  true;
}
long long result(int i0){
    int it;
    if(i0>1){
        it=1;
    }else if(i0==n){
        it = 1;
    }else{
        it = n;
    }
    long long add=0;
    for(i=1;i<=n;i++){
        add += save[it][i]-save[i0][i];
    }
    return add;
}
int main(){
    scanf("%d",&n);
    int i0,j0;
    if(n==1){
        printf("1\n");
        return 0;
    }
    long long now=0,sum=0;
    bool flag = true;
    bool can=true;
    for(i=1;i<=n;i++){
        if(can){
            now = sum;
        }
        sum = 0;
        can = true;
        for(j=1;j<=n;j++){
            scanf("%I64d",&save[i][j]);
            if(save[i][j]==0){
                i0=i,j0=j;
                can = false;
            }
            sum = (sum+save[i][j])%prime;
        }
        if(can){
            if(now!=sum&&now!=0){
                flag =false;
            }
        }
    }
    if(flag){
        long long sum1 = 0;
        long long sum2 = 0;
        bool can=true;
        for(i=1;i<=n;i++){
            if(save[i][i]==0){
                can =false;
                break;
            }
            sum1 = (sum1+save[i][i])%prime;
        }
        for(i=1;i<=n;i++){
            if(save[i][n-i+1]==0){
                can =false;
                break;
            }
            sum2 = (sum2+save[i][n-i+1])%prime;
        }
        if(sum1!=sum2&&can){
            printf("-1\n");
        }else if(sum1!=now&&can){
            printf("-1\n");
        }else{
            if(judge()){
                if(result(i0)>0){
                    long long answer = result(i0);
                    save[i0][j0]=result(i0);
                    sum1=0,sum2=0;
                    for(i=1;i<=n;i++){
                        sum1 = (sum1+save[i][i])%prime;
                        sum2 = (sum2+save[i][n-i+1])%prime;
                    }
                    if(n==2){
                        if(sum1==sum2&&judge()){
                            if(answer>0){
                                printf("%I64d\n",answer);
                                return 0;
                            }else{
                                printf("-1\n");
                            }
                        }
                    }
                    if(sum1==sum2&&sum1==now&&judge()){
                        if(answer>0){
                            printf("%I64d\n",answer);
                        }else{
                            printf("-1\n");
                        }
                    }else{
                        printf("-1\n");
                    }
                }else{
                    printf("-1\n");
                }
            }else{
                printf("-1\n");
            }
        }
    }else{
        printf("-1\n");
    }
    return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Codeforces Round #369 (Div. 2) B. Chris and Magic Square【数学,模拟】

题意:输入一个n*n的矩阵,有一个位置为0,问你能否在0处填上一个正整数,使得该矩阵的每一行,每一列,主对角,副对角线上的和都相等,即构成一个幻方。 由于要构成一个幻方,所以只用根据行的和求出要填的数...

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

B. Chris and Magic Square time limit per test 2 seconds memory limit per test 256 megaby...

Codeforces Round #415 (Div. 2)B. Summer sell-off (水题)

B. Summer sell-off time limit per test 1 second memory limit per test 256 megabytes input...

Codeforces Round #365 (Div. 2) 703B Mishka and trip 水题

Mishka and trip time limit per test 1 second memory limit per test 256 megabytes in...
  • kyoma
  • kyoma
  • 2016-08-05 12:59
  • 237

Codeforces Round #363 (Div. 2) B. One Bomb (水题)

B. One Bomb time limit per test 1 second memory limit per test 256 megabytes input ...

Codeforces Round #378 (Div. 2)B.Parade【模拟】水题

B. Parade time limit per test 1 second memory limit per test 256 megabytes input standar...

Codeforces Round #358 (Div. 2) -- B. Alyona and Mex (思路水题)

B. Alyona and Mex time limit per test 1 second memory limit per test 256 megabytes input ...

Codeforces Round #387 (Div. 2)B. Mammoth's Genome Decoding(水题)

题目: B. Mammoth's Genome Decoding time limit per test 1 second memory limit per test ...

Codeforces Round #359 (Div. 2) B. Little Robber Girl's Zoo(水题)

B. Little Robber Girl’s Zoo time limit per test2 seconds memory limit per test256 megabytes input...

【Codeforces Round 339 (Div 2)B】【水题】Gena's Code 若干10数+1特殊数的乘积

B. Gena's Code time limit per test 0.5 seconds memory limit per test 256 megabytes ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)