【A】数学
https://vjudge.net/contest/774379#overview
P4351 [CERC2015] Frightful Formula
容易找到每个格子的贡献,为 \(\binom{2n-i-j}{n-i}a^{n-j}b^{n-i}\)。
那么固定了的第一行第一列的贡献可以计算,注意第一步一定是向下/右。
对于其他的位置,都是 \(c\)。即我们需要求:\(\sum_{i=0}^{n-2}\sum_{j=0}^{n-2}\binom{i+j}{i}a^ib^j\)。
令 \(m=n-2\)。
考虑按照 \(i+j\) 进行递推,由于这是个正方形求和,那么我们从上一条对角线分别向下/右走一步,然后减去走出去的位置即可。即 \(f_{i+1}=(a+b)f_i-\binom{i}{m}a^{i-m}b^{m+1}-\binom{i}{m}b^{i-m}a^{m+1}\)。
AT_arc139_d [ARC139D] Priority Queue 2
考虑计算 \(\sum_{lim}\sum_{i} [lim\le a_i]\)。
记 \(c=\sum_{i} [lim\le a_i]\)。
插入:
- \(v\ge lim\):\(c\) 加一,方案数 \(m-lim+1\)。
- \(v<lim\):\(c\) 不变,方案数 \(lim-1\)。
删除: - \(c\ge n-x+2\):\(c\) 减一。
- \(c<n-x+2\):\(c\) 不变。
那么枚举到达 n-x+1 的时刻即可计算。
CF1097G Vladislav and a Great Legend
考虑组合意义,等于说虚树内选出 k 条边。那么容易有 \(O(nk^2)\) dp。
转移大概是:\(f_{u}=((2\prod_{v\in \mathsf{son}} (f_{v}+1))-1)e^x\)。
考虑做一个换元,设 \(t=e^{x}-1\),那么换元后的转移是 \(f_{u}=((2\prod_{v\in \mathsf{son}} (f_{v}+1))-1)(t+1)\),卷积可以背包处理。
最后还回去即可。答案即为 \([x^k/k!]\sum_{u}((2\prod_{v\in \mathsf{son}}(f_v+1))-\sum_{v\in\mathsf{son}}f_v-2)\)
往日之影
考虑设 \(n\) 元 GF,有 \([\prod x_i^{4k_i+c_i}]\prod (1+x_ux_v)\)。
\([\prod x_i^{4k_i}]\prod x_i^{4-c_i}\prod (1+x_ux_v)\)。
考虑对于每个 \(x_i\) 分别代入 \(1,-1,i,-i\) 即可求得上式。
注意到 \(1,-1\) 不能同时出现,\(i\) 至多 1 个,\(-i\) 至多 1 个。
可以计算。
AT_abc297_h [ABC297Ex] Diff Adjacent
考虑设 2 元 GF,\(x\) 元表示和,\(y\) 元表示长度,方案数 GF 为 \([x^n]\frac{1}{1-\sum_{i}\frac{x^iy}{1+x^iy}}\)。
答案即为对 \(y\) 维求导后带入 \(y=1\) 求和。
推导得到 \([x^n]\frac{\sum_{i}\frac{x^i}{(1+x^iy)^2}}{(1-\sum_{i}\frac{x^iy}{1+x^iy})^2}\),复杂度 \(O(n\log n)\) 计算。
CF623E Transforming Sequence
暴力 dp,考虑设计 \(f_{i,\operatorname{pop}(b_i)}\),有转移 \(f_{i,y}=\sum_{x=1}^y f_{i-1,x}2^x\binom{k-x}{k-y}\)。
转移和 \(i\) 没有关系,我们考虑倍增加速。
将 \(i\) 的定义改为长度,那么 \(f_{i}\) 和 \(f_{j}\) 的合并是:\(f_{i+j,x}=\sum_{p+q=x}f_{i,p}f_{j,q}2^{jp}\binom{k-p}{k-x}/\binom{k}{q}\),可以卷积计算。
要 MTT 真的谢特了。
AT_arc140_f [ARC140F] ABS Permutation (Count ver.)
CF1553I Stairs
首先划分出这些段,段的方向有三种 \(\uparrow,\downarrow,1\)。
考虑容斥去解决这个不能连成一个段的问题,那么可以 \(O(n^2)\) dp。
可以改成分治 dp,每次合并 \(f_{[l,mid]},f_{[mid+1,r]}\),那么我们可能关注首尾两个段的方向,进行卷积转移即可。
CF1967E2 Again Counting Arrays (Hard Version)
考虑对于某个 \(a\),\(b\) 的策略一定是能往上走就往上走。
那么考虑计算不合法的方案数,
其中:要求经过 \(b_i=-1\),不能经过 \(b_i=m\),往上走方案数为 \(m-1\),往下走方案数为 \(1\)。经过 \(b_i=-1\) 以后可以随意走。
考虑枚举终点 \(x\) 计算路径方案数。令 \(f(A_{1\sim k})\) 表示依次经过 \(b=A_i\) 的方案数。
- \(x\le -1\):显然一定会经过 \(b_i=-1\),但是需要减去 \(f(m)\),再加上 \(f(-1,m)\),再减去 \(f(m,-1,m)\),等等。
- \(x>-1\):从第一次经过 -1 的地方翻折下来变成 \(x\le -1\) 的情况。
对于 \(x\le -1\),他就是加上终点为 \(x-k(2m+2)\) 的方案,再减去 \(2m-x+k(2m+2)\) 的方案。其中 \(k\ge 0\)。也就是求 \(\sum \binom{n}{k(m+1)+b}\) 这种东西。容易预处理出每个同余等价类中的前缀和即可求出答案。
浙公网安备 33010602011771号