关注
python
我不是学计算机的,对算法不是很熟,打字也很慢,时间不够,第二题当时差点写完,多个十分钟多好。各位大佬看看我写的对嘛。
问题一:化简后是N*N!/a!/b!/c!/d!,不知道为什么只过了80%。
import math
inp = input().split()
N = int(inp[0])
a = int(inp[1])
b = int(inp[2])
c = int(inp[3])
d = int(inp[4])
value=math.factorial(N**2)/math.factorial(a)/math.factorial(b)/math.factorial(c)/math.factorial(d)%998244353
print(int(value))
问题二:第二题动态规划,大问题化成小问题,可惜最后没来得及写完。
基本思路是:去掉子节点开始的路线后的森林数=父节点开始的路线构成的森林数目(去掉所有他的子节点构成的树)+兄弟节点个数。所以只需要每个节点算两个值的和就行了,从根节点开始求出所有节点的森林数(根节点由于没有父节点所以是0),2号父节点只有1,而1有两个子节点,所以从2开始的森林数是1。我不是学计算机的,对数据结构不是很了解,不会写树的结构,就偷懒用列表来存储相关参数。大佬们看看有没有错误。
s = input().split()
num = int(s[0])
m = [[0, 0] for _ in range(num + 1)]
count = [0 for _ in range(num + 1)]
while True:
line = input().split()
if len(line) < 1:
break
int_line = [int(j) for j in line]
m[int_line[0]][1] += 1
m[int_line[1]][0] = int_line[0]
for i in range(2, num + 1):
count[i] = count[m[i][0]] + m[m[i][0]][1] - 1
print(max(count))
查看原帖
点赞 2
相关推荐
07-09 11:20
北京信息科技大学 机械结构工程师 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 实习生的蛐蛐区 #
47236次浏览 364人参与
# 夸夸我的求职搭子 #
199880次浏览 1917人参与
# 你认为小厂实习有用吗? #
17557次浏览 217人参与
# 硬件应届生薪资是否普遍偏低? #
75122次浏览 518人参与
# 应届生,你找到工作了吗 #
19567次浏览 144人参与
# 三一重工求职进展汇总 #
13072次浏览 60人参与
# 材料人,你们签了哪个公司 #
7233次浏览 17人参与
# 说说你知道的学历厂 #
33373次浏览 194人参与
# 计算机有哪些岗位值得去? #
15164次浏览 142人参与
# 下班后的时间你怎么安排 #
9120次浏览 131人参与
# 你找工作的时候用AI吗? #
16781次浏览 217人参与
# 面试尴尬现场 #
28530次浏览 193人参与
# 在职场上,你最讨厌什么样的同事 #
14963次浏览 151人参与
# 哪一瞬间觉得自己长大了 #
8320次浏览 183人参与
# 中核求职进展汇总 #
20567次浏览 152人参与
# 社会教会你的第一课 #
32759次浏览 424人参与
# 电网笔面经互助 #
36565次浏览 354人参与
# lastday知无不言 #
57533次浏览 469人参与
# 简历当中有水分算不算造假? #
26208次浏览 385人参与
# 如何拒绝/反向PUA #
68946次浏览 356人参与