2026.3.30 总结

2026.3.30 总结

T1

我们发现最终一定是一颗树,否则没有意义。

所以一定是树形结构。

设父节点为 \(fa\) ,当前节点为 \(u\)

则代价为 \(d_{fa}\ + \ d_u\) 肯定不优于 \(\min {d} + d_u\) 所以我们只需以 \(id_{\min{d}}\) 作为根节点,其它点像它连边即可。

时间复杂度 \(O(n)\)

T2

注意到 \(a_i + a_j + a_k = a_l\) 等价于 \(a_i + a_j = a_l - a_k\)

每次枚举到位置 \(i\) 时,先统计是否有 \(a_i - a_j\ \ (1 \leq j < i)\) 被标记过。

然后再将 \(a_i + a_j\ \ (1 \leq j < i)\) 标记一下。

就完了。

为了节省时间,我用了 bitset

trick:题目给你一个条件,然后让你去统计满足这个条件的数的个数,有时移项后有可能会好做一点。

problem

时间复杂度 \(O(\frac{n}{w})\)

T3

赛时写了个暴力的模拟,但是好像过了?

就是模拟一下,枚举上顶点,再找到下端点,然后由于菱形上下对称,所以就只需枚举一半去判合不合法,另一半直接可以一起判。

时间复杂度 \(O(n^2 \cdot m^2)\) 但是跑不满。

T4

老师赛时说了个样例解释,直接把做法说出来了。

其实就是按照老师说的,用短的连接长的。

先将数组排序,然后头尾一个双指针扫一下。

时间复杂度 \(O(n\log{n})\)

posted @ 2026-03-30 22:32  yixinc  阅读(0)  评论(0)    收藏  举报