H题用暴力搜索二维数组 为啥会超时啊???

为啥啊 怎么能优化一下呢?

全部评论
这题要换位思考,你要是一个点加了你去遍历整个二维数组更新那肯定会超时,不是要看一个点加了对全局有什么影响,而是要反过来看,一个点加了会对周围多少个位置的消灭数产生贡献,画图就知道了,如果一个点有增援,那么炮车放置在他周围的一个斜过来的正方形范围内都会产生影响,你只要每次增援更新他周围的13个点的消灭值就行了(不是更新原数组,是更新每个点能消灭的敌人数的数组),当然最开始的时候初始化你要先找到全局最大的那个位置,然后后面再比,不然如果增援的附近扫不到那个最大的位置就会漏全局最大解。
2 回复 分享
发布于 02-10 00:55 江苏
可以再弄一个面积数组,第一次先处理一下面积,然后每次增援只会影响到包括这个点在内周围大概13个地方的面积,只处理这十三个点就行了
1 回复 分享
发布于 02-09 18:47 山东
我是先生成一个sum数组统计一边每个点的消灭人数,然后每次支援再更新这个sum最后更新最大值,支援后的搜索范围只有更新的点,这样搜索的范围就是有限制的,不会超时
点赞 回复 分享
发布于 02-10 10:05 湖北
先求以每一个为中心的范围的12个点的值,存入另一个二维数组中,顺便把最大值存了,然后在查询的过程中,因为你已经求了没有改变时的最大值,之后你只需要遍历改变了的13个点的值就好了,这样就不需要重复遍历二维数组.从 n*m*q变成13*q
点赞 回复 分享
发布于 02-09 22:40 广东
你应该搞一个关于落点处会砸到多少人的数组,然后每次增援都更新一遍影响到的落点处就可以了
点赞 回复 分享
发布于 02-09 18:42 河南
暴力搜索肯定会超啊
点赞 回复 分享
发布于 02-09 18:40 河南

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务