• TZOJ 4475 The Coolest Sub-matrix(对角线前缀和)


    描述

    Given an N*N matrix, find the coolest square sub-matrix.
    We define the cool value of the square matrix as X-Y where X indicating the sum of all integers of the main diagonal and Y indicating the sum of the other diagonal.

    输入

    The first line has a positive integer N (2 ≤ N ≤ 400), the size of the matrix.
    The following N lines each contain N integers in the range [-1000, 1000], the elements of the matrix.

    输出

    Output the coolest value of a square sub-matrix.

    样例输入

    2
    1 -2
    4 5

    样例输出

    4

    题意:

    在n*n的矩阵中找到一个子矩阵,使得其 (正对角线整数之和-反对角线整数之和) 最大

    思路:

    记录矩阵中各对角线的前缀和,将所取对角线两端的前缀和相减,所得即为该对角线整数之和。

    #include<bits/stdc++.h>
    #define MAX 405
    using namespace std;
    int A1[MAX][MAX],A2[MAX][MAX];//A1正对角线前缀和 与 A2反对角线前缀和 
    int main()
    {
        int i,j,k,n,x,maxx=-1;
        cin>>n;
        for(i=1;i<=n;i++)
        {
            for(j=1;j<=n;j++)
            {
                scanf("%d",&x);
                A1[i][j]=A1[i-1][j-1]+x;//左上加到右下 
                A2[i][j]=A2[i-1][j+1]+x;//右上加到左下 
            }
        }
        for(i=1;i<=n;i++)    //起始行位置i 
            for(j=1;j<=n;j++)//起始列位置j 
                for(k=1;k<=min(n+1-i,n+1-j);k++)//小矩阵边长k 
                    maxx=max(maxx,A1[i+k][j+k]-A1[i-1][j-1]-(A2[i+k][j]-A2[i-1][j+k+1]));
        cout<<maxx<<endl;
        return 0;
    } 
  • 相关阅读:
    ThreadPoolExecutor详解
    java concurrent 之 SynchronousQueue
    最简单例子图解JVM内存分配和回收
    Jvm垃圾回收堆内存变化过程
    CentOS 7下OpenLDAP编译安装及配置
    Mysql+ODBC+OpenLDAP
    ffmpeg在 centos下的安装
    利用SQL SERVER对比两张表的数据一致性
    Python3通过汉字输出拼音
    SQL Server 用链接服务器 同步SqlServer与MySQL
  • 原文地址:https://www.cnblogs.com/kannyi/p/9610277.html
Copyright © 2020-2023  润新知