UVA10827球面上的最大和
题意:
最大子矩阵的加强版,就是给你一个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球面上的最大和的更多相关文章
- MT【1】终点在球面上的向量
解答: 评:最小值在Q为球心时取到,体现数学对称性的美!
- Cesium原理篇:7最长的一帧之Entity(上)
之前的最长的一帧系列,我们主要集中在地形和影像服务方面.简单说,之前我们都集中在地球是怎么造出来的,从这一系列开始,我们的目光从GLOBE上解放出来,看看球面上的地物是如何渲染的.本篇也是先开一个头, ...
- 利用JS实现的根据经纬度计算地球上两点之间的距离
最近用到了根据经纬度计算地球表面两点间距离的公式,然后就用JS实现了一下. 计算地球表面两点间的距离大概有两种办法. 第一种是默认地球是一个光滑的球面,然后计算任意两点间的距离,这个距离叫做大圆距 ...
- php根据地球上任意两点的经纬度计算两点间的距离 原理
地球是一个近乎标准的椭球体,它的赤道半径为6378.140千米,极半径为6356.755千米,平均半径6371.004千米.如果我们假设地球是一个完美的球体,那么它的半径就是地球的平均半径,记为R.如 ...
- manifold 微分流形上可以定义可微函数、切向量、切向量场、各种张量场等对象并建立其上的分析学,并可以赋予更复杂的几何结构以研究它们的性质。
小结: 1.流形(英语:Manifolds)一般可以通过把许多平直的片折弯并粘连而成,是局部具有欧几里得空间性质的空间,是欧几里得空间中的曲线.曲面等概念的推广 2.描述一个流形往往需要不止一个“地图 ...
- OpenGL 用三角形模拟生成球面
在看OpenGL红皮书,看到生成球体这节,讲了很多,总感觉不如自己动手写一些代码来的实在,用OpenGL中三角形模拟球形生成.主要要点,模型视图变换,多边形表面环绕一致性,矩阵堆栈.先贴上代码. 虽然 ...
- DirectX实现球面纹理映射
http://www.cnblogs.com/graphics/archive/2011/09/13/2174022.html DirectX实现球面纹理映射 介绍 球面纹理映射就是将一个平面纹理映射 ...
- hdu多校第六场1005 (hdu6638) Snowy Smilel 线段树/区间最大和
题意: 给定一个矩阵,矩阵上有若干点,每个点有正或负的权值,找一个方框框住一些点使得方框中点权值最大. 题解: 离散化横纵坐标,容易将这个问题转化为在矩阵上求最大和子矩阵的问题. 普通的n*n的矩阵的 ...
- 高效的多维空间点索引算法 — Geohash 和 Google S2
原文地址:https://www.jianshu.com/p/7332dcb978b2 引子 每天我们晚上加班回家,可能都会用到滴滴或者共享单车.打开 app 会看到如下的界面: app ...
随机推荐
- 关于MarkDown语法
Markdown语法 码云笔记链接:https://gitee.com/out_of_zi_wen/practical-experience/blob/master/Markdown%E8%AF%AD ...
- 漏洞复现-2.x rce-Thinkphp远程命令执行
0x00实验环境 攻击机:win10 靶机:Ubuntu18 (docker搭建的vulhub靶场) 0x01影响版本 影响Thinkphp 2.x的版本 0x02实验目的 学 ...
- MIMO OFDM 常用信号检测算法
MIMO OFDM 系统检测算法 1. 前言 MIMO的空分复用技术可以使得系统在系统带宽和发射带宽不变的情况下容易地获得空间分集增益和信道的容量增益.OFDM技术采用多个正交的子载波并行传输数据,使 ...
- 【java框架】MyBatis-Plus(1)--MyBatis-Plus快速上手开发及核心功能体验
1.MyBatis-Plus入门开发及配置 1.1.MyBatis-Plus简介 MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变, ...
- Java 8 Stream API 详解
Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利.高效的聚合操作(aggregate operation),或者大批量数据操作 (b ...
- vue+django实现websocket连接
一.概述 在项目中,需要使用websocket,来展示一些实时信息. 这里使用django 3.1.5 二.django项目 安装模块 pip3 install django-cors-headers ...
- Web 前端 - 优雅地 Callback 转 Promise :aw
前言 当今 ES7 标准大行其道,使用 async + await 将异步逻辑同步书写已经普及,但是却有许多旧库或旧代码尚未完全 Promise 化,急需一个小工具去挖去这代码中藓疾. 设计和实现 由 ...
- 基于阿里云托管kubernetes的版本升级
前言 因为阿里云的knative对应得k8s版本大于1.15,而我们目前得集群环境是1.14.8,因此需要对预发环境进行版本升级.基于aliyun托管的kubernetes集群版本升级本没有什么可写, ...
- windows环境下抓密码总结
在线抓密码 1.mimikatz privilege::debug token::whoami token::elevate lsadump::sam mimikatz.exe "privi ...
- [.net] 关于Exception的几点思考和在项目中的使用(二)
本文链接: https://www.cnblogs.com/hubaijia/p/about-exceptions-2.html 系列文章: 关于Exception的几点思考和在项目中的使用(一) 关 ...