摘要:
传送门 解题思路 一开始想到的是类似0/1分数规划的方法进行二分。 后来发现答案可以贪心解决。 我们可以发现最后的答案一定是由若干权值和相同的集合组成的,因为若其中一个集合的点权和较大,则将其单独拿出来显然更优。 所以可以先dfs一遍用树形dp求出最大的集合的大小ans,再dfs一遍,若扫到某个集合 阅读全文
摘要:
传送门 解题思路 观察到一个点的点权最多有8个质因数,所以可以存下来进行dp。 设dp[u][i]表示以u为根的子树中的点到u的gcd为u的第i个质因数的倍数的最大距离。 是不是有点绕。多读几遍。我再加个括号。 设dp[u][i]表示 (以u为根的子树中的点) (到u的gcd为u的第i个质因数的倍数 阅读全文
摘要:
传送门 解题思路 树形dp。 用dp[i]表示i的子树中的节点到i节点的最大收益。 Q:如何保证路径上任意时刻的收益非负? A:其实不需要管。因为若某一时刻收益为负,则不会去走,而是从零开始。 AC代码 #include<iostream> #include<cstdio> #include<cst 阅读全文