关注
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
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 中美关税战对我们有哪些影响 #
10597次浏览 155人参与
# 工作经验重要还是工资重要? #
22608次浏览 294人参与
# 美团求职进展汇总 #
2001460次浏览 18605人参与
# 校招求职有谈薪空间吗 #
119311次浏览 1606人参与
# 找工作如何保持松弛感? #
16528次浏览 258人参与
# 滴滴工作体验 #
18561次浏览 95人参与
# 海康威视求职进展 #
58607次浏览 319人参与
# 多益网络求职进展汇总 #
9894次浏览 64人参与
# 第一份工作应该只看薪资吗 #
125496次浏览 1390人参与
# 哪些公司校招卡第一学历 #
51184次浏览 188人参与
# 新凯来求职进展汇总 #
18005次浏览 70人参与
# 如果没找到工作,考公是你的退路吗 #
19363次浏览 212人参与
# 美的集团工作体验 #
18537次浏览 56人参与
# 通信硬件2024笔试面试经验 #
190448次浏览 1786人参与
# 通信/硬件公司求职体验 #
102091次浏览 800人参与
# HR问:你期望的薪资是多少?如何回答 #
25086次浏览 462人参与
# 水滴求职进展汇总 #
3013次浏览 21人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
69650次浏览 594人参与
# 你的论文盲审过了没? #
100084次浏览 1463人参与
# 文科生还参加今年的春招吗 #
8391次浏览 89人参与