2017. 网格游戏

给你一个下标从 0 开始的二维数组 grid ,数组大小为 2 x n ,其中 grid[r][c] 表示矩阵中 (r, c) 位置上的点数。现在有两个机器人正在矩阵上参与一场游戏。

两个机器人初始位置都是 (0, 0) ,目标位置是 (1, n-1) 。每个机器人只会 向右 ((r, c) 到 (r, c + 1)) 或 向下 ((r, c) 到 (r + 1, c)) 。

游戏开始,第一个 机器人从 (0, 0) 移动到 (1, n-1) ,并收集路径上单元格的全部点数。对于路径上所有单元格 (r, c) ,途经后 grid[r][c] 会重置为 0 。然后,第二个 机器人从 (0, 0) 移动到 (1, n-1) ,同样收集路径上单元的全部点数。注意,它们的路径可能会存在相交的部分。

第一个 机器人想要打击竞争对手,使 第二个 机器人收集到的点数 最小化 。与此相对,第二个 机器人想要 最大化 自己收集到的点数。两个机器人都发挥出自己的 最佳水平 的前提下,返回 第二个 机器人收集到的 点数 。

示例 1:

输入:grid = [[2,5,4],[1,5,1]]
输出:4
解释:第一个机器人的最佳路径如红色所示,第二个机器人的最佳路径如蓝色所示。
第一个机器人访问过的单元格将会重置为 0 。
第二个机器人将会收集到 0 + 0 + 4 + 0 = 4 个点。

示例 2:

输入:grid = [[3,3,1],[8,5,2]]
输出:4
解释:第一个机器人的最佳路径如红色所示,第二个机器人的最佳路径如蓝色所示。
第一个机器人访问过的单元格将会重置为 0 。
第二个机器人将会收集到 0 + 3 + 1 + 0 = 4 个点。

示例 3:

输入:grid = [[1,3,1,15],[1,3,3,1]]
输出:7
解释:第一个机器人的最佳路径如红色所示,第二个机器人的最佳路径如蓝色所示。
第一个机器人访问过的单元格将会重置为 0 。
第二个机器人将会收集到 0 + 1 + 3 + 3 + 0 = 7 个点。

提示:

grid.length == 2
n == grid[r].length
1 <= n <= 5 * 104
1 <= grid[r][c] <= 105

解题思路

以示例一为例子

通过观察可得,只要机器人一选出了任意一条路径,那么机器人二无论如何最多只能收集第一行或者第二行中,未被置为0的那部分点数。例如示例一,机器人二无论走什么路径,最多只能收集第一行的点数总和4或者第二行的点数总和1.因此,我们可以尝试全部机器人一的路径,但是因为我们只是关心第一行和第二行置为0以后的点数,因此可以使用前缀和,快速得出,每一行置为0以后的剩余点数,机器人二就会选择剩余点数多的那行进行收集,而我们的目的就是找出使得机器人二收集最少点数的路径

代码

class Solution {public:long long gridGame(vector<vector<int>> grid) {int n=grid[0].size();vector<long long > pre1(n),pre2(n);pre1[0]=grid[0][0];pre2[0]=grid[1][0];for (int i = 1; i < n; ++i) {pre1[i]=pre1[i-1]+grid[0][i];pre2[i]=pre2[i-1]+grid[1][i];}long long s1=pre1[n-1],s2=pre2[n-1];long long m=s1-pre1[0];for (int i = 1; i < n; ++i) {m=min(m,max(s1-pre1[i],pre2[i-1]));}return m;}
};

2017. 网格游戏相关推荐

  1. LeetCode 2017. 网格游戏(前缀和)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个下标从 0 开始的二维数组 grid ,数组大小为 2 x n ,其中 grid[r][c] 表示矩阵中 (r, c) 位置上的点数. 现在有两个 ...

  2. C++ Opengl 线,网格游戏源码

    C++ Opengl 线,网格游戏源码 项目开发环境 项目功能 项目演示 项目源码传送门 项目开发环境 开发语言:C++和IDE:VS2017,操作系统Windows版本windows SDK8.1, ...

  3. 捕鱼来了2017系列游戏

    版权声明:本文为博主原创文章,未经博主允许不得转载 <捕鱼来了2017系列游戏>是致力于为广大玩家开发出更好玩的手机游戏. 目前游戏只上appstore平台,多谢大家的支持与理解. 在您体 ...

  4. 护航者,腾讯云: 2017年度游戏行业DDoS态势报告—回溯与前瞻

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯游戏云 前言 自14年开始,全球DDoS攻击持续爆发,攻击峰值不断创记录.2017年,这种依靠超大流量不断冲击服务器和带宽造成业务 ...

  5. AI真的会杀人?DeepMind开发了二维网格游戏来做测试

    2019独角兽企业重金招聘Python工程师标准>>> 当马斯克和霍金都在担忧未来人来是否被人工智能取代的时候,DeepMind已经动手来证明这个结论了. DeepMind做这个测试 ...

  6. 2017年游戏营收报告公布,谁是去年最大的赢家?

    市场调研机构SuperData近日公布了"2017年数字游戏和互动媒体"的统计报告,其中整理了PC付费.PC免费.移动端.主机的内容营收情况. <绝地求生>无疑成为了P ...

  7. 浅谈2017棋牌游戏的前景 运营 推广(上) 转贴

    现在2017年过了大半,棋牌游戏前景还好不好呢,尤其是去年刚兴起的后期之秀-房卡棋牌模式.上半年,随着棋牌游戏开发公司和棋牌游戏运营者越来越多人入局,让棋牌游戏焕发了新的生机,目前地方的棋牌游戏平台, ...

  8. Unity SF上的2017全球游戏果酱

    Ever create a game in 48 hours? That's exactly what we set out to do this weekend as we celebrated G ...

  9. 2017网易游戏测试工程师-实习招聘在线笔试题

    网易游戏测试工程师 (一). A游戏又要开新服了,为了在短时间内冲排名,你得尽可能多地完成游戏任务.通过事先查攻略我们知道了所有的游戏任务,以及每个任务的时间窗口.一旦选定了做某个任务,在所选定任务的 ...

最新文章

  1. “95后”曹原又双叒叕发Nature了!1个月2篇,已经第6篇了……
  2. boost::geometry::srs::epsg用法的测试程序
  3. php上传图片完成后的截图,php实现粘贴截图并完成上传功能
  4. charts漏斗图表_ECharts漏斗图属性与实例介绍
  5. android 7.0编译报错,编译android7.0 sdk错误解决方法
  6. 支持多并发的单例有哪几种写法
  7. logback日志pattern_Logback pattern transactionid 中如何自定义灵活的日志过滤规则
  8. 【Pytorch】interpolate==>上下采样函数
  9. mysql无法输入数据库_关于mysql数据库无法录入中文的问题
  10. 权御天下计算机音乐数字乐谱,权御天下简谱
  11. Sniffer软件简介
  12. Python 查看微信撤回消息
  13. 血管老化30岁就开始!别怕,吃它就能搞定,让血管保持年轻~
  14. php生成其他网页截图,php实现网页截图
  15. 2022年G2电站锅炉司炉操作证考试题库及在线模拟考试
  16. unity3d的Animation 动画播放器的基本API
  17. bootstrap-datepicker只选择年份
  18. 分层和分段用什么符号_分段符号该怎么用
  19. Linux SDIO WIFI Marvell8801/Marvell88w8801(八) --- Marvell Linux Wi-Fi driver 对接芯片上行下行接口介绍
  20. {‘errcode‘: 47001, ‘errmsg‘: ‘data format error rid} 微信测试号模板消息,参数不对。

热门文章

  1. 操作系统(五)输入/输出(I/O)管理
  2. java接口作用和好处,持续更新大厂面试笔试题
  3. 三年Java开发,你连基础的JVM运行时内存布局都忘了
  4. web开发者工具,118页Vue面试题总结,涨姿势!
  5. cs231n---语义分割 物体定位 物体检测 物体分割
  6. 初识spring-boot
  7. Python程序互斥体
  8. git 常用commands(转)
  9. How to remove replication in SyteLine V2
  10. Eclipse 构建Maven项目