摘要: 原题(需要魔法) 原题(不需魔法) 强制在线做法 \(O(n \log n)\) 考虑每一次标记点:只会影响其子树中的点 所以使用DFS序+线段树就可以辣! 离线做法 \(O(n \log n)\) 考虑将每一次标记的时间记录到点上 然后使用倍增 \(LCA\) 的思想向上倍增 离线做法 \(O(n 阅读全文
posted @ 2023-09-26 20:51 FOX_konata 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 原题 今天我刚知道一个很逆天的事:\(DAG\) 的拓扑序方案数不可做!!!,目前能做到的最优方法好像是状压 我们考虑这题怎么做,对于一个限制,我们关心的是他俩在拓扑序中的相对排名,而这题恰好是一个树形结构,因此我们考虑树形 \(dp\) 我们设 \(dp_{i,j}\) 表示以 \(i\) 为根的 阅读全文
posted @ 2023-09-26 16:31 FOX_konata 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 原题 一道思维题 首先容易发现 \(m=2n\) 时满足条件,但题目让找一个最小的,因此我们考虑去除 \(n\) 中没用的一些状态 具体的,如果 \(n\) 是由两个以上的质因数构成的,那这些质因数显然可以在前 \(n-1\) 个数中找到,因此 \(n\) 就可以退役了可以删掉了 最终复杂度 \(O 阅读全文
posted @ 2023-09-26 14:24 FOX_konata 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 原题 人类智慧题!!! 假如没有地铁,这题就是一个非常典型的计算贡献的题。我们对每一条边看他左右子树中通过的客流量多少,对于一个边权为 \(w\) 的边,他的贡献显然为 \(w \times S_1 \times S_2\) ,其中 \(S_1,S_2\) 为当前边把树分成左右两部分的子树大小 现在 阅读全文
posted @ 2023-09-26 08:46 FOX_konata 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 原题 这题其实是有 \(O(n)\) 的解法的 我们考虑枚举删掉边的中间点,把树分成两个部分 然后对两棵树求直径中点,让删掉的边连接两个树的中点即可 最终复杂度 \(O(n^2)\) 如果通过加一条边操作让直径最小,则我们考虑把两棵树的中点相连 然后我们考虑 \(O(n)\) 的解法 首先,我们删的 阅读全文
posted @ 2023-09-26 08:12 FOX_konata 阅读(6) 评论(0) 推荐(0) 编辑