关注
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-04 15:23
三峡大学 FPGA工程师 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 实习简历求拷打 #
4826次浏览 64人参与
# 你会为了工作牺牲生活吗? #
66647次浏览 454人参与
# 秋招被挂春招仍然能投的公司 #
4717次浏览 81人参与
# 考研失败就一定是坏事吗? #
198584次浏览 1354人参与
# 什么是优秀的实习经历 #
6404次浏览 191人参与
# 为了求职,我做过的疯狂伪装 #
75326次浏览 763人参与
# mt对你说过最有启发的一句话 #
28825次浏览 358人参与
# 牛友们,签完三方你在忙什么? #
128539次浏览 981人参与
# 摸鱼被leader发现了怎么办 #
95703次浏览 617人参与
# 巨人网络工作体验 #
71034次浏览 502人参与
# 你今年的保底offer是哪家 #
154173次浏览 668人参与
# 秋招特别不鸣谢 #
13134次浏览 168人参与
# 你投递的公司有几家约面了? #
153703次浏览 990人参与
# 第一次面试 #
1035193次浏览 13679人参与
# 今年秋招你收到了多少封邮件? #
16216次浏览 216人参与
# 工作中遇到的歹人 #
23791次浏览 281人参与
# 选实习,你更看重哪方面? #
10888次浏览 200人参与
# 携程求职进展汇总 #
837481次浏览 5498人参与
# 滴!实习打卡 #
748888次浏览 6762人参与
# 毕业论文进行时 #
20328次浏览 127人参与
查看12道真题和解析