2025.4.15 模拟赛

4.15 模拟赛

又是只有我不会 T1 场/kk

说明还没有达到稳切 NOI 签到题的水平/kk

但是暴力分很多

bard

一眼 \(m\le 17\) 肯定是容斥,但是不知道怎么容斥...

其实很典,要求选出序列两两不同,就容斥掉钦定某些相同的情况。

自然的,枚举一个包含 \(lowbit(S)\) 的子集 \(T\),表示这些位置相同。考虑容斥系数,\(T\) 的情况会在每个大小为 \(|T|-1\) 的子集里被计算,于是容斥系数要乘一个 \(-(|T|-1)\)

钦定一个子集相同,可以选的数就是 \(lcm\) 的所有倍数,调和级数枚举一遍就行。

florist

key: \(c\) 次冒泡后,区间 \([1,l]\) 中的数必为 \([1,l+c]\) 的前 \(l\)

有了这个结论后,可以直接主席树上二分。

具体的,传两个参数 \((k,d)\) 表示去掉前面版本的前 \(d\) 小,求当前版本的前 \(k\) 小。

rainforest

问题转化:只考虑 \(x>0\) 的点,查询某个点所在连通块的大小。

树上连通块的经典套路是挂到根上。于是需要做的是找到当前点所在连通块的根,以及查询以某个点为根的连通块大小。

考虑树剖。
连通块的根就是 \(u\)\(1\) 路径上第一个 \(x\le 0\) 的点,对每条重链线段树上二分即可。
维护每个点的轻子树和,于是找到 \(u\) 向下走重链第一个 \(x\le 0\) 的点,求和即可。

修改先变成到根路径加,显然只会修改 \(\log\) 条轻边对应的子树和,从下到上暴力修改即可。

总复杂度 \(O(q\log^2 n)\)

posted @ 2025-04-16 12:20  Cindy_Li  阅读(27)  评论(0)    收藏  举报