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 ...
随机推荐
- [UNP] IO 复用
UNP Part-2: Chapter 6. I/O Multiplexing: The select and poll Functions 的读书笔记. 在 这篇博客 的最后,我们对文章中的服务器- ...
- scrapy框架爬取图片并将图片保存到本地
如果基于scrapy进行图片数据的爬取 在爬虫文件中只需要解析提取出图片地址,然后将地址提交给管道 配置文件中:IMAGES_STORE = './imgsLib' 在管道文件中进行管道类的制定: f ...
- 擅用ABAP错误捕捉,避免系统Dump
有时候我们在写程序时,会因为计算公式不符合算术表达式,计算公式的字段值不是纯数值等等问题造成程序dump,这个时候我们在无法避免字段赋值错误的情况下,又不想程序dump可以采取catch异常的方法进行 ...
- P2516 [HAOI2010]最长公共子序列 题解(LCS)
题目链接 最长公共子序列 解题思路 第一思路: 1.用\(length[i][j]\)表示\(a\)串的前\(i\)个字符与\(b\)串的前\(j\)个字符重叠的最长子串长度 2.用\(num[i][ ...
- Python-celery的使用
安装:pip install celery pip install eventlet 需要提前安装redis. (Download, extract and compile Redis with: $ ...
- MySQL优化从执行计划开始(explain超详细)
前言 小伙伴一定遇到过这样反馈:这页面加载数据太慢啦,甚至有的超时了,用户体验极差,需要赶紧优化: 反馈等同于投诉啊,多有几次,估计领导要找你谈话啦. 于是不得不停下手里头的活,赶紧进行排查,最终可能 ...
- Radar Scanner Gym - 102220G
题目链接:https://vjudge.net/problem/Gym-102220G 题意:在水平直角坐标系中有n个矩形,你可以将矩形沿着平行于X轴和Y轴水平移动,问至少经过几次移动可以使得所有的矩 ...
- K8S单集群桌面安装笔记【k8s-for-docker-desktop】
一.K8S集群基本的拓扑结构 二.下载 k8s-for-docker-desktop k8s桌面单集群安装,基本上选择 k8s-for-docker-desktop或者minikube两类,本文采用前 ...
- Ansible-Playbook中的变量使用
变量名:仅能由字母.数字和下划线组成,且只能以字母开头 变量来源: 1.ansible all -m setup 远程主机的所有变量都可直接调用 #显示所有变量 ansible all -m setu ...
- 【oracle学习笔记02】Oracle Architecture —— Process Structure
Oracle中有三类进程: 1 User Process 2 Server Process Server Process is a program that directly interacts wi ...