摘要:
题面 比较简单的树形dp(递推?) 设$dp[i][j]$表示距离$i$距离为$j$的点的数目,先预处理$g[i][j]$表示点$i$的子树中距离这个点距离为$j$的点的数目(猫老师讲过,用一个栈维护一下就好了),然后再预处理根节点,之后开始考虑dp。 当进入一个儿子时,首先这个儿子对于所有距离$d 阅读全文
posted @ 2018-10-11 08:33
Speranza_Leaf
阅读(197)
评论(0)
推荐(0)
摘要:
题面 可以水水换根的,不过我是另一种做法:(按点权)找重心,事实上这是重心的一个性质 考虑换根的这个过程,当我们把点放在重心时,我们移动这个点有两种情况: 1.移动到最大的那个子树里 可以发现这个最大的子树的$size$不可能超过其余子树的$size$之和(最多是有两个重心的时候等于其他子树的$si 阅读全文
posted @ 2018-10-11 08:11
Speranza_Leaf
阅读(156)
评论(0)
推荐(0)
摘要:
题面 设$dp[i][j]$表示容量为$i$时的第$j$优解,因为是优解,肯定$dp[i][j]$是随着$j$增大不断递减的,这样的话对于一个新加进来的物品,它只可能从两个容量的转移的前$k$优解中转移过来,所以每次用两个指针扫一下转移过来就好了。 1 #include<cstdio> 2 #inc 阅读全文
posted @ 2018-10-11 07:55
Speranza_Leaf
阅读(131)
评论(0)
推荐(0)
摘要:
题面 由树的结构我们可以知道,最终要么是连一条(最长的)链都没走完,要么是走了一些点最后走了最长的链。为什么总是说最长的链呢,因为在树上这样走的过程中(最后不要求返回的话)除了一条链都会被走两次,显然我们贪心地把最长链走一次即可。 1 #include<cstdio> 2 #include<cstr 阅读全文
posted @ 2018-10-11 07:47
Speranza_Leaf
阅读(97)
评论(0)
推荐(0)

浙公网安备 33010602011771号