米哈游笔试8.13后端题解

欢迎点赞交流讨论

T1

先后经过三个点,求最短距离;平面可连接扩展。

模拟即可,参考代码:

m, n = list(map(int, input().split()))
x1, y1 = list(map(int, input().split()))
x2, y2 = list(map(int, input().split()))
x3, y3 = list(map(int, input().split()))

def f(a, b, l):
    return min(abs(a-b), abs(min(a, b)+l - max(a, b)))
  
print(f(x1, x2, m)+f(y1, y2, n)+f(x2, x3, m)+f(y2, y3, n))

T2

向有根树的叶添加节点,使得距离根一定范围内的节点数最大。

只需要关心叶节点和它的深度即可,注意是无向图,不要被例题图片迷惑了,参考代码:

# Python默认的最大递归深度是1000,小于本题的范围,要设置下
import sys
sys.setrecursionlimit(1000000000)

n, k = list(map(int, input().split()))
G = [[] for i in range(n)]

for _ in range(n-1):
    u, v = list(map(int, input().split()))
    G[u-1].append(v-1)
    G[v-1].append(u-1)
    
def dfs(cur, depth, parent):
    if depth>k:
        return 0
    ans = 1
    if len(G[cur])>1 or parent==-1:
        for child in G[cur]:
            if child!=parent:
                ans += dfs(child, depth+1, cur)
    else:
        ans += max(0, k-depth)
    return ans
  
print(dfs(0, 0, -1))

T3

抽卡题,规则不再赘述,玩过原的应该会熟悉些。跟实际游戏还是有点区别的,实际上89抽之前也会增大抽取概率,本题留了一手。

数据范围很小,维护一个第i抽出金的概率数组,二层循环模拟即可,最后期望就是抽数乘以概率的累加和。参考代码:

p = float(input())
tmp = [0]*181

def wai(cur, index):
    for i in range(1, 90):
        tmp[index+i] += cur*p
        cur = cur*(1-p)
    tmp[index+90]+= cur

cur = 1
for i in range(1, 90):
    tmp[i] += cur*p/2
    wai(cur*p/2, i)
    cur = cur*(1-p)
tmp[90] += cur/2
wai(cur/2, 90)
print(sum([i*tmp[i] for i in range(len(tmp))]))

个人认为整体难度很白给,没有任何难度算法和数据结构,比暑期实习的题简单多了

全部评论
T2 无向图意思是他给的数据可能不是按父 子的顺序给的?这也太坑了
1 回复 分享
发布于 2023-08-13 22:11 重庆
第一题第7行应该是return min(abs(a-b), abs(min(a, b)+l - max(a, b)))哈
点赞 回复 分享
发布于 2023-08-13 22:19 上海
请问第三题13行wai的是不是没复制出来?
点赞 回复 分享
发布于 2023-08-13 22:09 加拿大

相关推荐

09-07 21:51
已编辑
广州市第二中学 Java
互动娱乐事业群,海面kpi,避雷!
牛客67625756...:佬,怎么看出来的海面kpi啊,我上周也被打电话约二面了,我看了你的面经,比我的难得多
点赞 评论 收藏
分享
08-30 16:50
已编辑
门头沟学院 C++
8.29 一面(70min)【实习经历】1.介绍其中一个需求的设计思路、考虑了哪些因素?2.模块实现时考虑性能方面的问题了吗,做了什么测试?3.现在来考量,还有什么可以优化的地方?4.深入追问模块具体实现过程5.提问另一个需求的设计与实现过程6.设计实现一个功能之后有没有适用性等方面的测试?7.举例一个比较有代表性的测试用例,如何设计的?【计算机基础】1.数据库的索引为什么可以加速查询,使用索引有什么需要注意的吗?2.C++的内存申请和管理是怎么操作的【算法】1.在2d网格中如果计算一个岛屿的数量,介绍思路以及时间复杂度(不需要手撕)2.爬楼梯,n阶楼梯,一次爬1-2格,求方法数(手撕)【游戏经历】1.介绍一下游戏经历,最喜欢哪一款,为什么(答王者荣耀)2.介绍一下某一次更新带来的改动?3.孙权的强度会不会过强,如果需要调整可以有哪些方面?4.射手的发育环境如何改善?5.刺客英雄的上下限如何平衡,官方有过什么调整,设计思路是什么?6.巅峰赛和排位的区别,对于游戏氛围、玩家留存有哪些积极影响?7.经济系统的设计逻辑,体现了什么作用?8.亲密系统这个机制对于游戏的作用,对平衡性有什么影响吗?9.进行大版本更新的时候,会考虑那些因素?10.Ban位增加,这个数量是如何定的?【逻辑题】1.一个5L的水和一个6L的水壶如何取得3L的水?2.四个赛车手,两局比赛,第一局比赛每人随机选车,第二局比赛不能用第一局选过的车,问第二局有几种选车情况?3.针对高层写字楼排队等电梯的现状,有哪些解决思路?【其他】1.为什么选择网易,当前有其他offer吗?2.有升学的打算吗?
查看26道真题和解析
点赞 评论 收藏
分享
评论
9
22
分享

创作者周榜

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