集训队作业做题记录
****### CF576D Flights for Regular Customers
总结:
- 对于这种限制有单调性的情况,可以考虑枚举达到了多少限制。
- 每条边限制了要先走过至少 \(d_i\) 步,那么要把每条边按照 \(d_i\) 排序,这样就可以把边一条一条的加入进去。
- 在图上走 \(k\) 步后点对间的可达性其实就是邻接矩阵做 \(k\) 遍传递闭包。
坑:
- 稍微比较显然的是,这道题的答案不能二分。
CF516D Drazil and Morning Exercise
总结:
- 解决树上问题时,有时选择一个合适的点作为根会很重要。这题中如果选择 \(f_i\) 最小的点作为根,那么这棵树上每个点的 \(f_i\) 都要比祖先节点的 \(f_i\) 大。
- 连通块问题下,可以考虑每个点对其他点(或者说是子树)的贡献,一般这样会更加方便。因为如果要计算某个子树内满足条件的最大连通块,那么这个最大连通块是不规则的。但是如果考虑每个点对一些子树的贡献的话,会发现,这些子树的根构成一条直上直下的链。
CF512D Fox And Travelling
总结:
- 这题的精髓在于把拓扑排序拓展到无向图上。
CF505E Mr. Kitayuta vs. Bamboos
总结:
- 贪心思想:如果某种操作产生的贡献的单点贡献(严格的说,是单点等权值的贡献),那么尽量先贡献给比较紧急的位置。
- 正难则反,把操作倒过来会简单很多。这道题中可以用来绕开 \(max(h_i-p,0)\) 这一难题。但相应的原来的 \(h_i+a_i\) 会变成 \(h_i - a_i\) , 所以要保证 \(h_i\) 时刻大于等于 \(0\). 简化了操作,但是增加了限制条件。

浙公网安备 33010602011771号