摘要: 题面 题外话:神**可持久化左偏树,你谷的人都太神了,学不来 我把这个当做A*模板题的说,先讲一讲个人对A*的理解:如果说普通的BFS是Bellman_Ford,那A*就是一个Dijkstra。以寻找第$k$优解为例,本来我们是要搜$k$遍;现在我们给当前的实际代价加上一个估计的乐观代价,这个就叫做 阅读全文
posted @ 2018-10-12 17:42 Speranza_Leaf 阅读(141) 评论(0) 推荐(0)
摘要: 题面 裸的搜索题,就说剪枝(注:nw->noww->当前,res->rest->剩余): 1.想达到$Nπ$的体积,那么半径一开始最多也就$sqrt(n)$了,再大就超了。。。 2.可以预处理$minv[i]$表示还剩$i$层时最少还要放多少的体积,当当前体积$+minv[res]>n$时剪掉 3. 阅读全文
posted @ 2018-10-12 17:22 Speranza_Leaf 阅读(137) 评论(0) 推荐(0)
摘要: 题面 比较简单的树形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)
摘要: 题面 洛谷数据非常水,建议去bzoj 我第一眼一看这不是那个POI2011的升级版吗(明明这个是2009年的,应该说那个是这个的弱化版,果然思想差不多。 因为$k$很小,可以考虑每个间隔距离来转移。我们按照传统(雾,其实这里的的名字已经不是很符合定义了,设$cov[i][j]$表示以$i$为根的子树 阅读全文
posted @ 2018-10-10 23:51 Speranza_Leaf 阅读(209) 评论(0) 推荐(0)
摘要: 首先洛谷的题面十分的劝退(至少对我这个菜鸡来说是这样),我来解释一下(原来的英文题面): 有一个有若干个密码(每个密码都可以开箱子)的密码箱,密码是在$0$到$n-1$的数中的,且所有的密码都满足一个条件:如果$x$是密码,$y$也是密码($x$可能等于$y$),那么$(x+y)\%n$也是密码。现 阅读全文
posted @ 2018-10-09 18:24 Speranza_Leaf 阅读(263) 评论(0) 推荐(0)
摘要: 题面 通过这个题理解了一下反链的概念,更新在图论知识点里了 每个点向右和下连边可以建出一张图,这个题事实上是让我们求图的最小链覆盖。Dilworth定理告诉我们,最小链覆盖等于最长反链(反链:DAG中的一个点集,其中的点两两不可达),所以我们在横/纵一个方向上反着做dp即可(另一个方向正着,这里以从 阅读全文
posted @ 2018-10-08 23:28 Speranza_Leaf 阅读(153) 评论(0) 推荐(0)
摘要: 题面 第一次做Trie上dp,感谢 @i207M 的资瓷 对子串们建立一棵Trie,设$dp[i][j]$表示到母串第$i$位为止在$Trie$上的$j$号节点时的最小修改数量,然后就可以枚举母串各位与Trie的节点dp了。 首先有两个显然的转移 $dp[i+1][j]=min(dp[i+1][j] 阅读全文
posted @ 2018-10-08 21:42 Speranza_Leaf 阅读(153) 评论(0) 推荐(0)