摘要:
节点u不放置,其所有子节点都需要放置:节点u放置,子节点既可以放置,又可以不放置,取min。 边界条件:dp[u][0]=0,dp[u][1]=1; 求解目标:min(dp[root][0],dp[root][1]),root是树根。 #include<cstdio> #include<cstrin 阅读全文
posted @ 2022-06-18 10:12
YHXo
阅读(35)
评论(0)
推荐(0)
摘要:
dp[u][0]表示不选u时在以u为根的子树中最大人数,dp[u][1]则是选了u后的最大人数; f[u][0]表示不选u时的唯一性,f[u][1]是选了u后的唯一性,值为1代表唯一,0代表不唯一。 当不选u时,u的子节点v可选可不选,dp[u][0]+=max(dp[v][0],dp[v][1]) 阅读全文
posted @ 2022-06-18 09:44
YHXo
阅读(34)
评论(0)
推荐(0)
摘要:
这道题的妙处在于把原问题看成矩阵连乘问题,求这些矩阵相乘的最小乘法次数,比如一个i*k矩阵乘一个k*j的矩阵,他们的乘法次数就是i*k*j (联想矩阵乘法的三层循环),题目说的取走一张牌,类似于矩阵相乘除去k,所以根据这个条件分析可以联想到矩阵。 题目要求首尾两端不可取,也就是求到最后只剩下一个矩阵 阅读全文
posted @ 2022-06-18 08:52
YHXo
阅读(50)
评论(0)
推荐(0)
摘要:
dp[i]表示要让i向上级发请愿书,最少需要多少个工人递交请愿书,因为要取前T%最小的,所以还要将i的子节点排序(这里用vector实现),取前c个最小的作为dp[i]的值。 这里用dfs可以省去dp数组,用返回值的方式实现。 1 #include<cstdio> 2 #include<cstrin 阅读全文
posted @ 2022-06-18 08:30
YHXo
阅读(41)
评论(0)
推荐(0)

浙公网安备 33010602011771号