关注
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
相关推荐
12-17 17:15
华东师范大学 运营 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 2025年终总结 #
172954次浏览 2921人参与
# 找工作,行业重要还是岗位重要? #
85321次浏览 1688人参与
# 职场上哪些行为很加分? #
306936次浏览 3452人参与
# 大家每天通勤多久? #
69814次浏览 442人参与
# 实习的内耗时刻 #
211192次浏览 1539人参与
# 你面试体验感最差/最好的公司 #
17851次浏览 292人参与
# 一人说一个提前实习的好处 #
10779次浏览 204人参与
# 今年你最想重开的一场面试是? #
4120次浏览 69人参与
# 秋招落幕,你是He or Be #
12203次浏览 240人参与
# 互联网行业现在还值得去吗 #
46921次浏览 351人参与
# 实习没事做是福还是祸? #
16802次浏览 255人参与
# 面试吐槽bot #
165011次浏览 814人参与
# 重来一次,你会对开始求职的自己说 #
6115次浏览 154人参与
# 反问环节如何提问 #
126385次浏览 2663人参与
# 礼物开箱Plog #
690次浏览 24人参与
# 工作中听到最受打击的一句话 #
6673次浏览 113人参与
# 团建是“福利”还是是 “渡劫” #
7223次浏览 150人参与
# 我的第一份实习怎么找的 #
208567次浏览 1827人参与
# 比亚迪工作体验 #
74734次浏览 281人参与
# 大家实习每天都在干啥 #
106537次浏览 581人参与
SHEIN希音公司福利 278人发布
