题意:

     最大子矩阵的加强版,就是给你一个n*n的矩阵,每个格子里面都有数字,然后我们在里面选择一个矩阵,使得矩阵中所有数字的和最大,而且这个题目说这个n*n的矩阵的最右边和最左边是相邻的,最上边和最下边是相邻的,这样就构成了一个球体。

思路:

     我们依然可以用最大子矩阵的方法去做这个题目,我的大体思路是这样(方法不唯一),为了处理球的这个问题,我是给这个矩阵右侧,下侧,右下侧都扩出来一个矩阵,一共四个矩阵,这个比较容易理解也很容易想到,然后我们可以利用前缀和来降低一维,然后枚举矩阵列的范围(把那些列捏在一起),捏完之后就变成了最大连续子序列了,然后在去求最大连续子序列,还有就是这个最大连续子序列不能O(n)求出来,原因是上下拼接后注意最多只能跑n个,随意还有枚举,一开始些了个75*150*150*75的,TLE了一次,然后发现有些地方多次枚举了,然后小优化了下,变成75*75*75*75的,顺利AC了,大体就是这个样子,具体细节可以看代码,这个题目说思路说的有点别扭,大家要是没看懂就看下先下面的代码吧。

#include<stdio.h>

#include<string.h>

#define N 160

int ss[N][N] ,num[N][N];

int main ()

{

    

    int t ,i ,j ,k ,n ,Ans;

    scanf("%d" ,&t);

    while(t--)

    {

        scanf("%d" ,&n);

        int maxx = -100000;

        for(i = 1 ;i <= n ;i ++)

        for(j = 1 ;j <= n ;j ++)

        {

           scanf("%d" ,&num[i][j]);

           num[i+n][j] = num[i][j+n] = num[i+n][j+n] = num[i][j];

           if(maxx < num[i][j]) maxx = num[i][j];

        }

        if(maxx <= 0)

        {

           printf("%d\n" ,maxx);

           continue;

        }

        memset(ss ,0 ,sizeof(ss));

        for(i = 1 ;i <= n * 2 ;i ++)

        for(j = 1 ;j <= n * 2;j ++)

        ss[i][j] = ss[i][j-1] + num[i][j];

        Ans = 0;

        for(i = 1 ;i <= n ;i ++)

        for(j = i ;j <= i + n - 1 && j <= n+n;j ++)

        {

            for(int ii = 1 ;ii <= n ;ii ++)

            {

               int now = 0;

               for(int jj = ii ;jj <= ii + n - 1 && jj <= n + n;jj ++)

               {

                   now += ss[jj][j] - ss[jj][i - 1];

                   if(now < 0) now = 0;

                   if(Ans < now) Ans = now;

               }

            }         

        }

        printf("%d\n" ,Ans);

    }

    return 0;

}

            

            

        

        

        

UVA10827球面上的最大和的更多相关文章

  1. MT【1】终点在球面上的向量

    解答: 评:最小值在Q为球心时取到,体现数学对称性的美!

  2. Cesium原理篇:7最长的一帧之Entity(上)

    之前的最长的一帧系列,我们主要集中在地形和影像服务方面.简单说,之前我们都集中在地球是怎么造出来的,从这一系列开始,我们的目光从GLOBE上解放出来,看看球面上的地物是如何渲染的.本篇也是先开一个头, ...

  3. 利用JS实现的根据经纬度计算地球上两点之间的距离

      最近用到了根据经纬度计算地球表面两点间距离的公式,然后就用JS实现了一下. 计算地球表面两点间的距离大概有两种办法. 第一种是默认地球是一个光滑的球面,然后计算任意两点间的距离,这个距离叫做大圆距 ...

  4. php根据地球上任意两点的经纬度计算两点间的距离 原理

    地球是一个近乎标准的椭球体,它的赤道半径为6378.140千米,极半径为6356.755千米,平均半径6371.004千米.如果我们假设地球是一个完美的球体,那么它的半径就是地球的平均半径,记为R.如 ...

  5. manifold 微分流形上可以定义可微函数、切向量、切向量场、各种张量场等对象并建立其上的分析学,并可以赋予更复杂的几何结构以研究它们的性质。

    小结: 1.流形(英语:Manifolds)一般可以通过把许多平直的片折弯并粘连而成,是局部具有欧几里得空间性质的空间,是欧几里得空间中的曲线.曲面等概念的推广 2.描述一个流形往往需要不止一个“地图 ...

  6. OpenGL 用三角形模拟生成球面

    在看OpenGL红皮书,看到生成球体这节,讲了很多,总感觉不如自己动手写一些代码来的实在,用OpenGL中三角形模拟球形生成.主要要点,模型视图变换,多边形表面环绕一致性,矩阵堆栈.先贴上代码. 虽然 ...

  7. DirectX实现球面纹理映射

    http://www.cnblogs.com/graphics/archive/2011/09/13/2174022.html DirectX实现球面纹理映射 介绍 球面纹理映射就是将一个平面纹理映射 ...

  8. hdu多校第六场1005 (hdu6638) Snowy Smilel 线段树/区间最大和

    题意: 给定一个矩阵,矩阵上有若干点,每个点有正或负的权值,找一个方框框住一些点使得方框中点权值最大. 题解: 离散化横纵坐标,容易将这个问题转化为在矩阵上求最大和子矩阵的问题. 普通的n*n的矩阵的 ...

  9. 高效的多维空间点索引算法 — Geohash 和 Google S2

    原文地址:https://www.jianshu.com/p/7332dcb978b2   引子 每天我们晚上加班回家,可能都会用到滴滴或者共享单车.打开 app 会看到如下的界面:     app ...

随机推荐

  1. springboot源码解析-管中窥豹系列之EnableXXX(十)

    一.前言 Springboot源码解析是一件大工程,逐行逐句的去研究代码,会很枯燥,也不容易坚持下去. 我们不追求大而全,而是试着每次去研究一个小知识点,最终聚沙成塔,这就是我们的springboot ...

  2. 数据采集组件:Flume基础用法和Kafka集成

    本文源码:GitHub || GitEE 一.Flume简介 1.基础描述 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,Flume支持在日志系统中 ...

  3. LZZY高级语言程序设计之169页**5.17

    import java.util.Scanner;public class MQ3 { public static void main(String[] args) { Scanner sc = ne ...

  4. CSS行内元素盒模型

    1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...

  5. MongoDB4.2 分片扫盲说明

    说明: 在扫盲MongoDB相关的一些知识的时候,顺手做下笔记.本文将说明分片相关的内容.在比较早之前已经对这些有过说明,可以看MongoDB 分片的原理.搭建.应用.分片(sharding)是指将数 ...

  6. Swagger接口如何生成Html离线文档

    A very simple tool that converts Swagger Api Document to Html File. 小记Swagger接口生成Html离线文档 由来 很多人用swa ...

  7. Android 之 ToolBar 踩坑笔记

    写在前面 •前言 这两天,学完了 Fragment 的基础知识,正准备跟着<第一行代码>学习制作一个简易版的新闻应用: 嘀嘀嘀~~~ 一声消息传来,像往常一样,打开 QQ,当我看到 QQ ...

  8. std::thread线程库详解(5)

    目录 目录 前言 信号量 counting_semaphore latch与barrier latch barrier 总结 前言 前面四部分内容已经把目前常用的C++标准库中线程库的一些同步库介绍完 ...

  9. Azure App Service(一)利用Azure DevOps Pipeline 构建镜像,部署应用程序

    一,引言 起因是前两天项目上做测试,需要我把写好的基于.NET 5 的 Web 测试程序作成 Docker 镜像.当我在本地验证完功能后,准备利用 Docker 构建应用程序镜像的时候,发现系统不支持 ...

  10. 使用ffmpeg 操作音频文件前后部分静音移除.

    指令特别简单, 但是却琢磨了一下午. 总结看文档时要细心, 主要ffmpeg的版本要 8.2.1 以上 ffmpeg -i in.mp3 -af silenceremove=start_periods ...