CSP-S模拟测试(21)25.9.6

t1 火车站

贪心,题意是:有一堆二元组,你可以把它分成很多组,满足每一组有有 \(a_i>a_{i+1}\)\(b_i<b_{i+1}\),问最少能分成多少组。

我们按照 \(b_i\)排序,然后答案就是最长上升子序列(lis)。

t2 Desire

image

神题。我们先考虑对每个点枚举,发现会有重复的情况,然后考虑删掉这种重复的情况,我们可以在每一种答案的最顶端计算贡献,那么其实就是lca。

但是还是会重复,因为一些答案可能跨过了很多的lca 考虑容斥。我们发现错误计算的答案都满足所有点的lca 都不是当前点的lca,就做完了。

t3 Courage

题目看着复杂,实际也不简单。

先考虑第一问,其实是在求一种方案数,我们考虑 dp。设计 \(f_{i,j}\) 为在 \(i\) 的子树中,还有 \(j\) 个点没有匹配。

那么转移也很好想,就是先把儿子合并。然后考虑 \(i\) 有没有被匹配。

第二问的状态很 nb。我们发现一个交叉(相应的 \(4\) 个点)的贡献。其实就是删掉 \(4\) 个点,剩下的点的第一问答案。

这个也是能 dp 的。我们加上一维 \(k\) 表示当前删了 \(k\) 个点,转移的时候加上一种删除这个点的情况就好了。

t4 innocent

image

我们考虑拆点,然后缩点。

image

posted @ 2025-09-08 09:25  NeeDna  阅读(7)  评论(0)    收藏  举报