ご注文はゼロ点ですか?
0.闲扯
今天是唐爷爷
打开题面看到了奇怪的题目名称,然后就颓废颓废颓废
1.题解
A
有一列白球,将一些刷成黑的,多次询问黑球之间距离至少为 \(k\) 且位置 \(x\) 不能刷的方案数。
首先不考虑 \(x\) 的限制,发现可以把一个黑球和 \(k-1\) 个白球捆起来然后算组合数。
然后带上 \(x\),发现不太好搞,所以我们反过来强制黑球,就可以转化为刚才的问题。
然后根号分治
B
给出一棵 LCT,每个点有 \(a_i\) 个棋子,随机选择一个未标记的棋子将其所在点 access
并标记该棋子,要求支持移动棋子和查询期望实链长度 \(k\) 次方和。
观察到每条实边的概率是独立的,所以可以写出一个单次 \(O(nk^2)\) 的垃圾 ddp。
但是这个东西显然是没有前途的,我们发现可以计算出每条实链的出现概率,设 \(s_u\) 为 \(u\) 子树内点权和,那么一条实链的概率就是 \(\left(1-\dfrac{s_u}{s_{fa_u}}\right)\dfrac{a_v}{s_u}\),对答案的贡献再乘上一个 \((dep_v-dep_u)^k\),这个东西是可以暴力展开的,然后把与 \(u,v\) 有关的项分离。
展现高超的数据结构技巧!
C
有一个序列,每个位置可能取到 \([0,a_i]\),要求支持单点修改和查询一个区间所有数的异或和有多少种可能在 \([L,R]\) 里。
扔一个 tyy 给的结论:称形如 \([c2^k,(c+1)2^k)\) 的区间为 \(k\) 块,则任意一个可重集异或 \(k\) 块后对于任意满足 \(\lfloor i/2^k\rfloor=\lfloor j/2^k\rfloor\) 的 \(i,j\) 有它们出现次数相等,两个块异或的结果还是块且大小等于较大的那个。
对于一个区间我们可以将其分成若干个块,我们需要在每个位置挑一个块计算答案,可以直接枚举最大块大小。
2.杂题选讲
LOJ6669
这个题可能有人会想到点分治之类的,但其实树剖就够了。
我们对求出的点建虚树,加入新点时询问深度,然后每次询问重链底部,就可以算出它在重链的哪一部分,然后递归下去求解。由于 \(n\) 非常小,每次加入点后暴力剖分即可。
CF1268D
有一个奇怪的结论是 \(n\ge6\) 时答案为 \(0\) 或 \(1\)(证明留作练习)。
然后判强连通。
CF1268E
先考虑一棵树怎么做,我们找到边权最小的边,然后删掉它递归更新即可。
但是搬到仙人掌上会出问题:更新答案时可能有环上的点提前被达到了,而这个点一定会在环上最大边更新时算进去并且这个环需要满足从最小边到最大边的两条路径单增。
然后我们预处理出这样的环,统计答案时减去。
CF1503E
不妨设蓝色格子不连通,那么必然存在两行,它们的蓝色区间不交。
那么我们发现会形成这样的形状:
然后我们枚举这两行和区间端点,方案数由于轮廓线的特殊性质可以随便推式子。
懒得推了,留作练习,但是式子是 \(O(n^3)\) 的,不过我们好像可以前缀和优化。