摘要: 考虑先做一个$O(n^2) 的 dp$ $f[i][j]$表示在$i$的子树中,距离当前点为$j$的点数 $g[i][j]$表示在$i$的子树中,两个点$lca$的距离为$d$,他们的$lca$到$i$距离为$d - j$的点对数。 那么怎么转移? \(ans += g[i][0],ans += g 阅读全文
posted @ 2021-05-26 22:04 fhq_treap 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 一开始看错题目惹,导致错过了这题的关键$trick$ 考虑每次操作肯定都是一个$[k,n]$的,证明贪心一下就好了。 那么考虑记$f[i][k]$为前$i$个数用了$k$次。 那么只要满足$j < i \ and\ a_j + k_j ⇐ a_i + k_i \ and\ k_j < k_i$就能转 阅读全文
posted @ 2021-05-26 20:48 fhq_treap 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 看着$dp$标签进来的。 结果是个数据结构嘛。 这个对于每个人都维护一下子树里$sum ⇐ m$的最大人数就好了。 考虑贪心一下就不说了。从叶子节点往上合并堆,当然这种简单的合并操作,$stl$最好,跑得还很快。 [APIO2012]派遣 #include<iostream> #include<cs 阅读全文
posted @ 2021-05-26 20:18 fhq_treap 阅读(37) 评论(0) 推荐(0) 编辑