关注
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
相关推荐
牛客热帖
正在热议
# 25届秋招总结 #
311418次浏览 2845人参与
# 海康威视求职进展汇总 #
399630次浏览 3406人参与
# 百度开奖 #
171031次浏览 1066人参与
# 地方国企笔面经互助 #
4085次浏览 11人参与
# 学历or实习经历,哪个更重要 #
52102次浏览 412人参与
# 选完offer后,你后悔学本专业吗 #
20690次浏览 148人参与
# 阿里云管培生offer #
34277次浏览 414人参与
# 如何一边实习一边秋招 #
993380次浏览 12646人参与
# 正在实习的你,几点下班 #
52567次浏览 394人参与
# 米哈游求职进展汇总 #
176479次浏览 1461人参与
# 美的求职进展汇总 #
206881次浏览 1619人参与
# 2023毕业生求职有问必答 #
120807次浏览 1302人参与
# 国央企薪资爆料 #
9714次浏览 75人参与
# 投递实习岗位前的准备 #
1180503次浏览 18400人参与
# 机械制造秋招总结 #
30323次浏览 353人参与
# 机械制造面试记录 #
149596次浏览 1931人参与
# 求职遇到的搞笑事件 #
71118次浏览 577人参与
# 如果不工作真的会快乐吗 #
59921次浏览 525人参与
# 得物求职进展汇总 #
66761次浏览 685人参与
# 0offer是寒冬太冷还是我太菜 #
900302次浏览 8017人参与
# 腾讯求职进展汇总 #
196373次浏览 1645人参与
# 数据人offer决赛圈怎么选 #
117051次浏览 1468人参与