第一题我大概敲了5 6分钟的样子就实现了, 第二题,看过组合数学这本书,第一小问是个公式题,答案是C(n + m - 1,m),证明我忘了,稍稍有点巧妙,但是公式还记得,对于这个问题的更通用解决办法好像是利用容斥原理,第二小问就是组合数学的乘法计数原理 第三题的话,我先答了一个暴力的做法,和一个先判断是否在X范围内,再判断的简单小优化,然后我考虑的是用数据结构优化,分别是建一棵KD树,每次查询离圆心最近点,期望的复杂度是logn级别的,然后如果小于半径,说明这个点是OK的,然后从KD树删除这个点,期望的复杂度是mlogn,m为在范围内怪物的个数,然后我提到在游戏里,一个场景一般不大可能的50 60%的怪物都被一个技能命中,所以可以肯定这个m很小。 另外办法是四叉树,然后可以缩小枚举区间。 回答完以后,线下自己后来又想了一下,还可以通过离散所有点的坐标,这样所有点的坐标都是正负10W以内,可以通过在圆心向外作BFS之类的,优先访问最近的点,尽可能往外扩展,似乎也是个还凑合的办法。
点赞 8

相关推荐

牛客网
牛客企业服务