滴滴笔试AK(9月28日)

T1

n, a, b, c = map(int, input() .split())
cache = dict()

def dfs(i, a ,b, g):
    if (i,a, b,c) in cache:
        return 0
    ans = int(a + b > c and a + c > b and b + c > a)
    if n < i:
        cache[(i,a,b,c)] = ans
        return ans
    if c > i:
        ans += dfs(i + 1,a, b, c - i)
    if b > i:
        ans += dfs(i + 1,a, b - i, c)
    if a > i:
        ans += dfs(i + 1,a - i, b, c)
    cache[(i, a,b,c)] = ans

    return ans

print(dfs(1,a, b, c))

T2 换根dp,先dfs一次算出根为0时候的答案,记录一下每个节点的子树的大小,然后换根,计算的时候可以O(1)转移根节点

def dfs1(root):
    sz = 1
    for to in adj[root]:
        if vis[to]:
            continue
        vis[to] = 1
        sz2, ans2 = dfs1(to)
        sz += sz2
        ans[root] += ans2
    ans[root] += sz - 1
    szv[root] = sz
    return sz, ans[root]

def dfs2(root):
    for to in adj[root]:
        if vis[to]:
            continue
        vis[to] = 1
        t = ans[to]
        ans[to] += n - szv[to]
        ans[to] += ans[root] - t - szv[to]
        dfs2(to)

n, m = map(int, input().split())
adj = [[] for _ in range(n)]
p = [-1] * n
szv = [0] * n
ans = [0] * n

xv = list(map(int,input().split()))
for i in range(1, n):
    x = xv[i-1]-1
    p[i] = x
    adj[i].append(x)
    adj[x].append(i)

vis = [0] * n
vis[0] = 1
dfs1(0)

vis = [0] * n
vis[0] = 1
dfs2(0)

xv = list(map(int,input().split()))
for i in range(m):
    v = xv[i] - 1
    print(ans[v], end=" ")

#滴滴##笔试#
全部评论
依依神,太强了
点赞 回复 分享
发布于 2023-09-29 22:03 浙江
@青笛
点赞 回复 分享
发布于 2023-09-28 23:43 湖南
楼主,T1代码跑n, a, b, c = 1,100,100,100答案应该是4吧?你的答案是2.根据示例5,3,4,5的结果为10,顺序不同的原木组合应该算两种。
点赞 回复 分享
发布于 2023-09-28 23:37 江苏

相关推荐

08-14 16:56
门头沟学院 Java
点赞 评论 收藏
分享
白火同学:先说结论,准大三不是特别好找实习,boss沟通300+没有实习是很正常的情况。一是暑期实习时间太短了,二是在这么多准大四都找不到实习,从实习时间和掌握技术层面,企业会优先看他们。 再说简历,其实985本+准大三到这水平的简历也很优秀了,要说的话,项目经历可以再优化一下,可以基本围绕采取STAR原则,分为项目概述、技术架构、技术亮点、实现结果,再发给AI润色一下。 最后说操作,准大三的话,如果想找实习那就多投,不过现在也7月中旬了,时间上已经略晚了。如果7月底实在找不到,也可以多刷点算法,多学点技术,这实习也不至于一定得有,当然有更好。
点赞 评论 收藏
分享
ccc6660204:直接转前端,明天开始学,把自己学过Java 什么的全都忘记,不要有任何惋惜,信我,坚持到大三下你会感谢我
计算机有哪些岗位值得去?
点赞 评论 收藏
分享
都在说秋招是越早投越好,我越早投和双9大佬同台竞技,我压力暴大呀营销号都说越早投递越好真的不是贩卖焦虑吗
xxxxOxo:分批次投吧,投太多面试安排不过来或者一直面都没时间复盘,那很多面试等于白面了
点赞 评论 收藏
分享
评论
3
3
分享

创作者周榜

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