沙盘游戏
Ivy是如此地喜欢编程,以至于在面对游戏时也是如此。在沙盘游戏中有一个巨大的方形沙盘(长方形或者正方形),该沙盘被分隔成边长为1的小方格,每个小方格内有一个整数。沙盘玩家需要在沙盘中圈出一个方形(长方形或者正方形都可以)的区域(必须沿着小方格的边界划线,不能穿过小方格的内部),目标是争取被圈区域内的整数之和最大。
为了描述方便,Ivy把这个沙盘用n*m个整数来表示,每个整数所在位置表示沙盘中一个边长为1的小方格。
Ivy现在需要编程解决这样一个问题:在n*m(n行m列)个整数中选择一个x*y(x行y列)的方形区域(x最大可达n,y最大可达m),使得这x*y个整数之和是所有可以选择的方形区域中最大的,并输出这个最大总和值。

输入

第一行包含n和m二个整数,中间用一个空格分隔,分别表示原始方形区域中所包含的行数和列数。
下面有n行,每行m个整数(每个整数的范围是-200到200)组成的数据。

输出

一行一个整数,表示某个被圈出的方形区域中所有位置上整数之和,该值必须是所有可以圈出的方形区域所对应整数和中,总和最大的那个,该值确保不超过106 。

n,m<280;

样例输入

3  3
10 -21 9
7 8 4
-6 1 0

样例输出

19

(n*m)^2的复杂度肯定是不行的,这就需要优化一下了;

首先维护一个二维前缀和;然后遍历x坐标的所有区间(n^2)

然后遍历Y轴(m),每次维护一个大于零的底边;也就是说如果Y遍历的时候得到的子矩阵和小于零,更新底边,(下次的时候再加前面没意义了)

所以这样就优化到(n*n*m)的复杂度

代码呈上;

#include <bits/stdc++.h>
#define maxn 1000005
using namespace std;
typedef long long ll;
using namespace std;
int main()
{int s[300][300];int a[300][300];memset(s,0,sizeof(s));int n,m;scanf("%d%d",&n,&m);for(int i=1; i<=n; i++){for(int j=1; j<=m; j++){scanf("%d",&a[i][j]);s[i][j]+=a[i][j];s[i][j]+=s[i-1][j];s[i][j]+=s[i][j-1];s[i][j]-=s[i-1][j-1];}}/*for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){printf("%d  ",s[i][j]);}printf("\n");}*/int maxx=-1e8;for(int i=1; i<=n; i++){for(int j=0; j<i; j++){int rec=0;for(int w=1; w<=m; w++){if(s[i][w]-s[j][w]-s[i][rec]+s[j][rec]>0){if(s[i][w]-s[j][w]-s[i][rec]+s[j][rec]>maxx){maxx=s[i][w]-s[j][w]-s[i][rec]+s[j][rec];//printf("%d %d %d %d\n",i,j,w,rec);
                    }}else{if(s[i][w]-s[j][w]-s[i][rec]+s[j][rec]>maxx){maxx=s[i][w]-s[j][w]-s[i][rec]+s[j][rec];//printf("%d %d %d %d\n",i,j,w,rec);
                    }rec=w;}}}}printf("%d\n",maxx);return 0;
}

转载于:https://www.cnblogs.com/xiaolaji/p/9533179.html

沙盘游戏(2017绍兴市第十五届少儿信息学竞赛复赛试题)相关推荐

  1. 绍兴市第十六届计算机复赛试题,绍兴市第十七届少儿信息学竞赛复赛试题

    绍兴市第十七届少儿信息学竞赛复赛试题 (考试时间:150分钟) 一.题目一览 中文题目名称 英文题目名称 输入文件名 输出文件名 每个测试点时限 测试点数目 每个测试点分值 听歌识曲 song son ...

  2. 2016年蜀山区第十五届青少年信息学竞赛

    2016年蜀山区第十五届青少年信息学竞赛 小学组试题 一.题目概况 题目名称 求差 生日 抓牛 工资 文件名

  3. 2016年第31届宁波市信息学竞赛复赛试题 D 射击

    题目本体 题目描述 不难发现,豆豆能从很多事情中去思考数学,于是豆豆父母决定让他去练习射击,这是项需要集中注意力的运动,相信能够让豆豆暂时脱离数学.学习射击的第一天就让豆豆产生了浓厚的兴趣,射击的靶子 ...

  4. 2017年第十五届Esri中国用户大会资料分享

    原文地址:2017年第十五届Esri中国用户大会资料分享 2017年10月24-25日,在北京国际会议中心举办了第十五届Esri中国用户大会,今年用户大会的主题是:Applying the Scien ...

  5. 2017年第二十五届中国(深圳)国际礼品及家居用品展览会会刊(参展商名录)

    2017年第二十五届中国(深圳)国际礼品及家居用品展览会会刊(参展商名录) 展会名称: 2017年第二十五届(中国)国际礼品及家居用品展览会 所属展馆: 深圳会展中心 开展时间: 2017-04-25 ...

  6. 第十五届全国青少年信息学奥林匹克联赛初赛试题

    第十五届全国青少年信息学奥林匹克联赛初赛试题(2009年),我只摘录了选择题,部分题目做了注解. 一.单项选择题 1.关于图灵机下面的说法哪个是正确的: A.图灵机是世界上最早的电子计算机. B.由于 ...

  7. 第十五届智能车竞赛技术报告-成电金秋-AI电磁

    01引言 1.1 大赛介绍 全国大学生"恩智浦"杯智能汽车竞赛是以"立足培养.重在参与.鼓励 探索.追求卓越"为宗旨,鼓励创新的一项科技竞赛活动.今年首次新增了 ...

  8. 第十五届智能车竞赛芯片选型浅析

    ➤ 01第十五届竞赛 众所周知,第十五届智能车竞赛虽然来晚了几个月,但依然热闹非凡,芯片厂商不再由NXP独家提供,呈现了卓老师所说的三足鼎立的局面,可以选择由NXP.Infineon.STC三家公司提 ...

  9. 2022.3.12 绍兴文理学院元培学院第十五届大学生程序设计竞赛

    绍兴文理学院元培学院第十五届大学生程序设计竞赛 A 阳光明媚的数学题 B 爱的素数 C 庄生的笔 D 上流的聚餐 E 规划(一) F 规划(二) G 运动的球球 H 物资转移 I 小杨环 J 前四位 ...

最新文章

  1. mysql如何下载连接到visual_Visual Studio 2015 Community连接到Mysql
  2. 代码 设计 生活 (2)--- 菜鸟
  3. python3语法糖------装饰器
  4. java 委托_动态代理:Java开发必学
  5. python linux教程_在RedHat系统Linux上部署Python的Celery框架的教程
  6. 女人赢了 未来500万年男性将灭绝
  7. 遍历Linux kernel的链表时删除元素的方法
  8. 解决 【xshell 5 不能使用退格键和Delete建】的问题
  9. Shiro 登录认证源码详解
  10. Enterprise Continuous Integration with Binary Dependencies example
  11. 鼠标自动点击脚本_613个主流网站中发现点击劫持脚本
  12. mysql monitor用户_Mysql的用户基本操作
  13. 人生苦短快用python_人生苦短,快用 Python
  14. python花瓣飘零_PYTHON抓取花瓣网高清美图
  15. 全方位了解8.0系统下的Handler
  16. 虫师乙醇自动化测试培训第三期
  17. note2刷 android 5.0.2,三星Galaxy Note Pro 12.2 Android 5.0.2更新锁定了竞争对手的键盘
  18. 贴吧顶帖工作室(贴吧怎么顶帖)
  19. Spring框架究竟是什么
  20. Http的多线程下载

热门文章

  1. java matcher group方法_Java中正则表达式相关类中Matcher.group()方法
  2. php ajax 实现三级省市区联动
  3. 赶紧入手,python面试题之Python如何实现单例模式?
  4. Redis进阶篇:发布订阅模式原理与运用
  5. 模拟冯.诺依曼计算机
  6. Python学习 Day43 数据解析-BeautifulSoup 07
  7. 2022华东杯A题核酸检测问题思路讲解
  8. 写在冬日的第一天--一个女程序员第十六年工作总结
  9. linux 移动硬盘 machine,MacBook使用一块移动硬盘做Win To Go及Time Machine备份
  10. python-pyqt5-初识-2基本操作