CF板刷记录
2026.7.29
2241G Summmon
这个操作是可撤销的,因此 \(a_i\) 能变化的值就是 \(a_l\sim a_{i-1}\) 的任意组合,也就相当于是 \(k * gcd(a_l,...,a_{i-1})\)(感性理解,证明可用裴蜀定理)
那么我们可以发现,一个区间的答案应该只由第一个 \(gcd(a_l,...a_i) \ne a_l\) 的数决定
证明:
- \(l \sim i-1\) 的贡献显然为0
- 设 \(a_i\) 时的答案为 \(x=min(a_i\%a_l,a_l-a_i\%a_l)\),那么 \(a_{i+1}\) 时能调整的精度 \(=gcd(a_l,a_i)=gcd(a_l,x)\le x\),那么 \(a_{i+1}\) 一定能调整到 \(\le x\) 的数,因此最大就为 \(x\)
然后我们对于每个 \(a_i\),我们直接二分+ST表算出区间,计算贡献即可
2228E1 Amanojaku and Sequence (Easy Version)
解析
设能选的个数为 \(k\),总和为 \(m\),那么总方案为 \(\begin{pmatrix} k+m-1 \\k-1 \end{pmatrix}\)
我们令已确定的前缀和为 \(F_i\),选择的前缀和为 \(X_i\),选择个数为 \(cnt_i\),单个选择大小为 \(e\),那么 \(i\) 时的贡献 \(=(F_i+X_i)^2=F_i^2+2*F_i*X_i+X_i^2\) 答案就等于三部分的总和
我们一部分一部分来看
第一部分 \(\begin{pmatrix} k+m-1 \\k-1 \end{pmatrix}*\sum F_i\)
第二部分 \(\sum F_i*X_i=\sum F_i*cnt_i*\sum e_i\)
考虑怎么算 \(\sum e_i\):因为 \(e= \begin{pmatrix} e \\1 \end{pmatrix}\),我们将计数转化为组合问题,就相当于选出 \(k\) 个数后再第一个数内再选一个,那就是再多放一个挡板
因此 \(\sum e_i= \begin{pmatrix} k+m-1 \\ k \end{pmatrix}\)
第三部分 \(cnt_i\sum {e_i}^2+cnt_i*(cnt_i-1)\sum\sum e_i*e_j\),\(\sum\sum e_i*e_j\) 与上面类似,相当于选两个数,等于 \(\begin{pmatrix} k+m-1 \\k+1 \end{pmatrix}\),
平方和用组合数转化 \(\begin{pmatrix} e \\2 \end{pmatrix}={e^2-e\over2}\Rarr \sum{e_2}=2*\begin{pmatrix} k+m-1 \\k+1 \end{pmatrix}+\begin{pmatrix} k+m-1 \\k \end{pmatrix}\)
因此总和为 \(\sum \begin{pmatrix} k+m-1 \\k-1 \end{pmatrix}* F_i+ (2F_i+1)*\begin{pmatrix} k+m-1 \\ k \end{pmatrix}*cnt_i+cnt_i*(cnt_i+1)*\begin{pmatrix} k+m-1 \\k+1 \end{pmatrix}\)
收获
组合数的组合意义和数学意义可以灵活转化
2026.7.30
2211F Learning Binary Search
解析
每一个位置的次数的固定的,且一个区间的贡献就是区间的最小值,因此我们考虑从每个区间的方案下手
考虑一个 \([l,r]\) 的区间,将其缩成一个点,就相当于 \(n-r+l\) 个点,值域为 \([1,m]\),单调不降,但是有一个点左右不能相等的方案
这里提供一种理解方法,我们在前后分别加一个 \(1\) 和 \(m\) 的点,做差分,相当于 \(n-r+l+1\) 个非负整数数,和为 \(m-1\),但由于限制了两个不相等,因此差分要减二才保证是非负整数,因此总方案为 \(\begin{pmatrix} m-3+n-r+l \\ m-3\end{pmatrix}\),贡献是区间最小值之和,可以用ABC407F
的方法,二阶差分
另外1和m的方案略有不同,为 \(\begin{pmatrix} m-2+n-len \\m-2 \end{pmatrix}*premax_{len}\)
收获
区间最值和:单调栈+二阶差分
区间问题可以考虑缩点
2026.7.31
2207 E2 N-MEX (Counting Version)
解析
先考虑无解的情况,如果 \(a_i<a_{i+1}\),那么显然无解
然后分类讨论
- \(a_i=a_{i-1}\):在能填的空中填一个,方案数为 \(a_i-n+i\)
- \(a_i< a_{i-1}\):只能填已填过的和大于 \(a_i\) 的,方案数 \(a_i-n+i+n-a_i=i\)
- 另外还有判掉无解的情况:\(i<a_i-n+i\) 或 \(a_i-n+i<0\)
(感性理解:2.时 \(mex(i)=n-i+1\),如果再加一定变小)
最后相乘即可

浙公网安备 33010602011771号