做题记录 26.3.29
\(\textcolor{purple}\odot\) AT_agc073_a [AGC073A] Chords and Checkered
初始整个圆为白色,之后每次选择一条弦,将弦外侧的一半黑白翻转,求最终黑色连通块的数量
显然黑色连通块分为两类:一类直接和圆心所在块相邻,一类内侧为两条相交的弦,外侧为一段弧或两条相交的弦
第一类必然为黑色,一共 \(n\) 个,每个在一半的方案中出现,总贡献为 \(n\times 2^{n-1}\)
第二类仅在 \(n\ge 3\) 时出现,每两条相交的弦可以唯一确定一个第二类区域,设两条弦分别为 \([a,a+k]\) 和 \([b,b+k]\),相交部分为 \([b,a+k]\),则 \([b,a+k]\) 以外的弦选择情况任意,\([a,a+k]\) 和 \([b,b+k]\) 两条必须都选,\([b,a+k]\) 内(定义为有一共端点在其内部)的弦需要恰好选择奇数条,从而若 \([b,a+k]\) 内部存在弦,则在 \(\frac 18\) 的方案中产生贡献,否则不产生贡献,容易统计这部分的贡献
时间复杂度 \(O(n\log n)\) 或 \(O(n)\)
\(\textcolor{purple}\odot\) AT_agc002_d [AGC002D] Stamp Rally
重构树上二分权值,倍增求出可达点数即可
时间复杂度 \(O(n\log^2 n)\),精细实现可以做到 \(O(n\log n)\)
\(\textcolor{purple}\odot\) AT_agc002_f [AGC002F] Leftmost Ball
特判 \(k=1\) 的情况
假定将得到的序列中 \(n\) 种颜色根据第一次出现的顺序重新标号,显然原问题的答案为转化后的答案乘以 \(n!\)
显然一种合法的配对为第 \(i\) 个 \(0\) 属于颜色 \(i\)
一个序列合法当且仅当 \(n\) 组【第 \(i\) 个 \(0\),第 \(1\) 个 \(i\)】顺序出现
令 \(f_{i,j}\) 表示放置了后 \(i\) 组,此时前缀 \(0\) 数量为 \(j\) 的方案数
转移考虑枚举第一种颜色的出现位置(不含 \(0\)),容易做到 \(O(n^3+nk)\)
容易前缀和优化到 \(O(n^2+nk)\)
\(\textcolor{purple}\odot\) AT_agc006_c [AGC006C] Rabbit Exercise
操作对 \(x\) 的影响是线性的,因此直接维护每个点位置的期望即可,每次对于一个 \(p=a_i\),令 \(x_p\gets x_{p-1}+x_{p+1}-x_p\)
对 \(x\) 差分,则等价于交换 \(x'_p\) 和 \(x'_{p+1}\)
一轮操作对 \(x\) 的影响相当于置换,显然置换具有结合率,因此可以 \(O(n\log k)\) 求出 \(k\) 轮置换的影响
时间复杂度 \(O(n\log k)\)
\(\textcolor{purple}\odot\) AT_agc011_d [AGC011D] Half Reflector
可证一次操作为:若第一位为 A 则翻转之,否则删去第一位,最后加上 B,然后集体 A/B 翻转
显然后缀部分最后必然为 AB 交替,且这部分后缀每进行两次操作则延长一位,从而至多 \(2n\) 次操作后,整个串都 AB 交替,特别地,若 \(n\) 为奇数则第一位字符会在 AB 中 震荡
从而 \(k>n+n\) 时,结果在至多两种情况中震荡,因此可以将 \(k\) 降到 \(O(n)\)
容易 bitset 做到 \(O(\frac{n^2}\omega)\)
显然可以优化到 \(O(n)\)

浙公网安备 33010602011771号