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)\)

浙公网安备 33010602011771号