码迷,mamicode.com
首页 > 其他好文 > 详细

CH#46 磁力块 分块

时间:2018-12-10 14:15:06      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:简单的   超时   第一个   理解   直接   题解   mmm   bsp   石头   

正解:分块+bfs

解题报告:

突然感觉不停课大概是正确的选择QAQ

大概实在是没有天赋?明明都知道正解是分块甚至还听了下解法感觉理解了,再看一次依然没想到解法,,,好菜啊,,,所以这种明明都落实过然而再看一次还是做不出来的题目是最最应该写题解的了QAQ

昂不叨叨了说说这题正解

1)  显然的是每块石头能吸的磁石是固定的,不存在改变次序之后会有改变,所以直接拿得到哪个磁石就把这个磁石能吸到的磁石都加入   队列,bfs就好了

这里是个最简单的暴力想法?还是不难想的我觉得qwq

还一个很显然的是这个暴力会超时,于是怎么优化呢?

当当!分块!好了说完了没了

2) ummm我第二次看到这题的时候就卡在这儿了QAQ不知道怎么分块QAQ

这时候重新梳理下这题,冷静思考一下这题,发现如果磁石被吸引要有俩条件

第一个是质量<=磁力;第二个是距离<=半径

根据分块的常见思路来说显然就是根据一个分块根据另一个在分块内部再排序是趴

那就以按质量分块为例说下大致思路(阿西其实是书中讲的按质量分块我也不清楚能不能按距离?大胆猜测一波也许可以趴QAQ打算有时间去打下按距离分块的看看可不可以qwq

那按照常见套路来说就是按质量分块然后再在内部按照距离分块

这样的话对每个磁石都是只有前面一些块能吸上(满足质量qwq

然后每个块的内部又是只有前面一些块能吸上(满足距离qwq

然后就朴素扫描一波就欧克了

嗷这么简单的优化当然是不够的

还有一个小tips是说,每个块内部能被吸走的磁石一定是连续的(显然qwq

所以可以记录下每块内部最后一个被吸走的磁石的位置,这样每个块内部每次算的时候直接从第一个没被吸走的磁石开始枚举就好了

大概就是这样?讲得大概还算清楚至少目前是清楚的qwq打算几周之后回来看看这题看看能不能再看懂QAQ

然后做完之后来放个代码QAQ

还有就是为什么这题看到之后会想到用分块以及这个题目的时间复杂度,都要之后再回来说明下鸭QAQ

CH#46 磁力块 分块

标签:简单的   超时   第一个   理解   直接   题解   mmm   bsp   石头   

原文地址:https://www.cnblogs.com/lqsukida/p/10095438.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!