uva10827Maximum sum on a torus

简介: 题意:给定一个矩阵,每个元素可正可负,求最大子矩阵使得其所有元素和最大。给定的矩阵是环形的,即:第一列和最后一列是相连接的,第一行和最后一行也是相连接的。 分析:构造前缀和。O(n4)的效率不是很满意,期待更快的算法 View Code 1 #include 2 #includ...

题意:给定一个矩阵,每个元素可正可负,求最大子矩阵使得其所有元素和最大。给定的矩阵是环形的,即:第一列和最后一列是相连接的,第一行和最后一行也是相连接的。

分析:构造前缀和。O(n4)的效率不是很满意,期待更快的算法

View Code
 1 #include <stdio.h>
 2 #include <iostream>
 3 using namespace std;
 4 const int MAXN = 160;
 5 #define DEBUG
 6 int a[MAXN][MAXN], b[MAXN], c[MAXN];
 7 int main(){
 8 #ifndef DEBUG
 9     freopen("in.txt", "r", stdin);
10 #endif
11     int cas, n;
12     scanf("%d", &cas);
13     while(cas--){
14         scanf("%d", &n);
15         int i, j;
16         for(i=0; i<n; i++)
17             for(j=0; j<n; j++){
18                 scanf("%d", &a[i][j]);
19                 a[i][j+n]=a[i+n][j]=a[i+n][j+n]=a[i][j];
20             }
21         int ans = -0X3F3F3F3F;
22         int x, y;
23         for(x=0; x<n; x++)
24             for(y=0; y<n; y++)
25                 for(i=0; i<n; i++)
26                     for(j=0; j<n; j++){
27                         c[j]=a[i+x][y+j];
28                         if(j>0) c[j]+=c[j-1];
29                         if(i>0) b[j]+=c[j];
30                         else b[j]=c[j];
31                         if(ans<b[j]) ans=b[j];
32                     }
33         printf("%d\n", ans);
34     }
35     return 0;
36 }

 

目录
相关文章
人工智能 缓存 前端开发
6294 19
人工智能 JavaScript 开发工具
3255 4
缓存 JavaScript Shell
1554 1
开发工具 Swift git
1049 1
Shell API 调度
865 2
|
13天前
|
存储 弹性计算 缓存
阿里云服务器租赁费用:新版租赁收费标准及活动报价参考
本文更新了2026年阿里云全系列云服务器租赁活动报价,所有特惠资源均可前往阿里云活动中心选购,整体覆盖从个人入门到企业级高性能场景的全梯度需求。其中轻量应用服务器主打极致性价比,2核2G峰值200M带宽配置每日10点、15点限时抢购价仅38元/年,2核4G配置379元/年起;高性价比的经济型e实例、通用算力型u2i实例覆盖2核4G至4核32G全档位,适配开发测试与中小型企业业务;搭载英特尔至强6处理器的第九代c9i企业级实例算力较上代提升20%,支撑高并发生产环境,不同实例规格价差清晰,用户可根据自身业务负载与预算灵活选型。
2118 121
阿里云服务器租赁费用:新版租赁收费标准及活动报价参考
|
14天前
|
人工智能 程序员 API
Codex 接入 DeepSeek-V4-Flash:还能补上识图,提供两套方案
Codex 接入 DeepSeek-V4-Flash 怎么配?本文覆盖 CLI 与桌面端,再用 qwen3-vl-flash 补识图,两套方案可直接照做
1770 13
安全 机器人 API
607 2
缓存 人工智能 算法
708 1

热门文章

最新文章