关注
 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
相关推荐
 点赞 评论 收藏   
分享
  点赞 评论 收藏   
分享
 牛客热帖
更多 
 正在热议
 更多 
 # 你实习是赚钱了还是亏钱了? #
 5298次浏览 53人参与
# 找工作八股要背到什么程度? #
 4007次浏览 77人参与
# 京东开奖 #
 431237次浏览 2458人参与
# 秋招开始捡漏了吗 #
 32390次浏览 235人参与
# 我在牛爱网找对象 #
 202730次浏览 1412人参与
# 用一句话形容你的团队氛围 #
 3216次浏览 46人参与
# 入职以后才知道的校招谎言 #
 101716次浏览 646人参与
# 你找工作是从容有余 or 匆忙滚爬? #
 3022次浏览 41人参与
# 上班后,才发现大学__白学了 #
 5542次浏览 36人参与
# 今年秋招还有金九银十吗 #
 24958次浏览 232人参与
# 同bg的你秋招战况如何? #
 160952次浏览 935人参与
# 今年秋招是回暖还是遇冷 #
 2935次浏览 26人参与
# 五一之后,实习真的很难找吗? #
 90137次浏览 561人参与
# 学历对求职的影响 #
 552295次浏览 3921人参与
# 规定下班时间vs实际下班时间 #
 56948次浏览 332人参与
# 辞职后的日常 #
 16601次浏览 84人参与
# 你喜欢工作还是上学 #
 79220次浏览 865人参与
# 打工人的精神状态 #
 103438次浏览 1318人参与
# Offer比较,求稳定还是求发展 #
 65277次浏览 272人参与
# 分享一个让你热爱工作的瞬间 #
 44360次浏览 395人参与
# 一人一个landing小技巧 #
 128776次浏览 1467人参与