数学部分做题记录

I. [ARC152C] Pivot

神仙题。

II. CF1792E Divisors and Table

III. CF1763D Valid Bitonic Permutations

IV. P6736 「Wdsr-2」白泽教育

注意到 \(n\in \{1,2,3\}\)

  • \(n=1\)

\(a\uparrow^1 x=a^x\equiv b\pmod p\),这是一个平凡的 BSGS 问题。

  • \(n=2\)

我们有

\[a\uparrow^2 x=\underbrace{a^{a^{a^{.^{.^{.^{a}}}}}}}_{x} \]

根据 CF906D 的经典结论,当 \(x\ge r=\Theta(\log p)\) 时幂塔在模 \(p\) 意义下结果不变,所以直接做就可以了。

  • \(n=3\)

我们有

\[a\uparrow^3 x=\left. \underbrace{a^{a^{a^{.^{.^{.^{a}}}}}}}_{ \underbrace{a^{a^{a^{.^{.^{.^{a}}}}}}}_{ \underbrace{\vdots}_{a} } } \right\} b \]

\(n=2\) 的情况,迭代次数最多只会是 \(4\),直接做就好了。

V. P9405 [POI 2020/2021 R3] 星间旅行

神仙题。

VI. P5598 【XR-4】混乱度

神仙题。

VII. P3705 [SDOI2017] 新生舞会

显然的 0/1 分数优化,二分答案后直接跑费用流即可。我也不知道为什么能过。

VIII. P5516 [MtOI2019] 小铃的烦恼

神仙题。

IX. P3830 [SHOI2012] 随机树

神仙题。

X. CF1830C Hyperregular Bracket Strings

很厉害的题。

XI. UVA10652 Board Wrapping

凸包板子题。只需要知道向量旋转的结论就可以了。

XII. CF1967B2 Reverse Card (Hard Version)

尺子姐姐!/se

不妨套路地设 \(\gcd(a,b)=g\)\(a=gx\)\(b=gy\)

引理

\[x^2\lt n,y^2\lt m \]

证明

题目条件化为 \(x+y\mid gy\)。由于 \(\gcd(x+y,y)=\gcd(x,y)=1\),所以 \(x+y\mid g\)

注意到 \(x+y\lt g\),而 \(g=\dfrac{a}{x}\le \dfrac{n}{x}\),即得 \(x^2\lt n\)\(y\) 的讨论是对称的。

注意到引理,我们直接枚举互素数对 \((x,y)\),由于 \(a=gx\le n\)\(b=gy\le m\),所以 \(g\le \min\left(\dfrac{n}{x},\dfrac{m}{y}\right)\);又 \(x+y\mid g\),所以除以 \(x+y\) 后下取整即可。

时间复杂度 \(\Theta(n+m)\)

XIII. P6835 [Cnoi2020] 线形生物

神题,可以加深对数学期望的了解。

XIV. CF1967C Fenwick Tree

尺子姐姐!!/se

注意到树高最多为 \(\Theta(\log n)\),不难想到维护每一个 \(i\) 对其祖先的贡献。

发现做 \(k\) 次 Fenwick Sum,对应链上的深度差为 \(d\) 的节点中,儿子对祖先的贡献为 \(\displaystyle{d+k-1\choose k-1}\)。直接减去即可。

时间复杂度 \(\Theta(n\log n)\)

XV. CF113D Museum

\(f(i,j)\) 为 A 在 \(i\),B 在 \(j\) 的期望次数。由于终态 \((i,i)\) 只会出现 \(\{0,1\}\) 次,所以这里期望等于概率。

我们有显然的转移方程:

\[\begin{aligned} f(y,w)&\gets\sum_{(x,y)\in E}\sum_{(z,w)\in E} \frac{(1-p_x)(1-p_z)}{\deg_x\cdot\deg_z}f(x,z) \quad \\ &+\sum_{(z,w)\in E} \frac{p_y(1-p_z)}{\deg_z}f(y,z) \quad \\ &+ \sum_{(x,y)\in E}\frac{(1-p_x)p_w}{\deg_x }f(x,w) \quad \\ &+p_yp_w\cdot f(y,w) \end{aligned} \]

额外地,如果 \((y,w)\) 是起点,那么 \(f(y,w)\) 的期望值还需要额外加 \(1\),理由显然。

时间复杂度 \(\Theta(n^6)\)。代入 \(n=22\) 得到 \(1.13\times 10^8\),精细实现应该是可以过的。

XVI. P3599 Koishi Loves Construction

见非传统题做题记录 Ett

XVII. [ABC322G] Two Kinds of Base

神仙题。

XVIII. CF632E Thief in a Shop

XIX. CF1548C The Three Little Pigs

XX. P4173 残缺的字符串

XXI. [ABC307Ex] Marquee

XXII. P4448 [AHOI2018] 球球的排列

XXIII. [ABC291G] OR Sum

\[a \operatorname{or} b= a+b-ab \quad \text{where }a,b\in \{0,1\} \]

XXIV. P3412 仓鼠找sugar II

XXV. P4609 [FJOI2016] 建筑师

XXVI. [ABC321G] Electric Circuit

XXVII. [ARC105F] Lights Out on Connected Graph

XXVIII. P6478 [NOI Online #2 提高组] 游戏

XXIX. P2953 [USACO09OPEN] Cow Digit Game S

见博弈论做题记录 I

XXX. P10501 Cutting Game

见博弈论做题记录 II

XXXI. [ARC168B] Arbitrary Nim

见博弈论做题记录 III

XXXII. P4841 [集训队作业2013] 城市规划

XXXIII. [ABC327G] Many Good Tuple Problems

首先题意转化为求 \(n\)\(m\) 边的有标号二分图(可以有重边)数量。

套路地设 \(n\)\(m\)简单二分图(染色方式不同算多种)的数量为 \(f(n,m)\)。则枚举左部点数量,我们得到

\[f(n,m)=\sum_{i=0}^n{n\choose i}{m\choose i(n-i)} \]

套路地设 \(n\)\(m\) 边的连通简单二分图(染色方式不同算多种,但显然只有两种染色方式)的数量为 \(g(n,m)\)。则枚举 \(1\) 号点所在连通块,我们得到

\[g(n,m)=f(n,m)-\sum_{i=1}^{n}\sum_{j=0}^m {n-1\choose i-1}g(i,j)f(n-i,m-j) \]

边界为 \(g(1,0)=1\)

不套路地\(n\)\(m\) 边的简单二分图的数量(染色方式不同算一种)的数量为 \(h(n,m)\),套路地枚举 \(1\) 所在连通块,我们得到

\[h(n,m)=\frac{1}{2}\sum_{i=1}^n\sum_{j=0}^m{n-1\choose i-1} g(i,j)h(n-i,m-j) \]

为什么要除以 \(2\):每种连通二分图在 \(g\) 中被计算了两次。

枚举去重后的边数 \(M\),则贡献为 \(h(n,M)\) 乘以 \(m\) 条边中不同元素个数为 \(M\) 的方案数。

转化为将 \(m\) 个有标号球放进 \(M\) 个有标号盒子中,且没有空盒子的方案数。

受到十二重计数法的启发,套路地枚举空盒子数量 \(i\),容斥(二项式反演)即可;所以就是

\[\sum_{i=0}^{M}(-1)^i{M\choose i}(M-i)^m \]

即为答案。

XXXIV. P10506 魔法珠

见博弈论做题记录 IV

XXXV. P6487 [COCI2010-2011#4] HRPA

见博弈论做题记录 V

XXXVI. P2148 [SDOI2009] E&D

见博弈论做题记录 VI

XXXVII. [ABC212H] Nim Counting

XXXVIII. CF914G Sum the Fibonacci

给定长度为 \(n\) 的数组 \(s\)。定义五元组 \((a,b,c,d,e)\)好的当且仅当:

  1. \(1\le a,b,c,d,e\le n\)
  2. \((s_a\operatorname{or}s_b)\operatorname{and}s_c\operatorname{and}(s_d \operatorname{xor} s_e)=2^i,i\in \mathbb{Z}\)
  3. \(s_a\operatorname{and}s_b=0\)

对于所有好的五元组 \((a,b,c,d,e)\),求出 \(f(s_a\operatorname{or}s_b)\times f(s_c)\times f(s_d \operatorname{xor} s_e)\) 的和。对 \((10^9+7)\) 取模。

其中 \(f\) 为 Fibonacci 数列,满足 \(f_0=0,f_1=1,f_i=f_{i-1}+f_{i-2}\)\(\mathrm{and},\mathrm{or},\mathrm{xor}\) 分别代表按位与,按位或,按位异或运算。

\(1\le n \le 10^6\)\(0\le s_i \lt 2^{17}\)

XXXIX. [ABC137F] Polynomial Construction

XL. P5387 [Cnoi2019] 人形演舞

XLI. P7575 「PMOI-3」公约数

题目中给出的形式不方便反演。不妨先考虑一个计数 dp。

\(f(i,j)\) 为考虑了前 \(i\) 个数,其中第 \(i\) 个数是 \(j\) 的合法方案数。

初值:\(f(1,j)=[x_1\mid j]\)

转移:

\[f(i,k)=\sum_{x_{i-1}\mid j} [\gcd(j,k)=x_{i-1}] f(i-1,j) \]

直接开始莫反。

\[\begin{aligned} f(i,k)&=\sum_{x_{i-1}\mid j} [\gcd(j,k)=x_{i-1}] f(i-1,j) \\ &=\sum_{j=1}^{\lfloor\frac{m}{x_{i-1}}\rfloor} [\gcd\left(j,\frac{k}{x_{i-1}}\right)=1] f(i-1,j\cdot x_{i-1}) \\ &=\sum_{j=1}^{\lfloor\frac{m}{x_{i-1}}\rfloor} f(i-1,j\cdot x_{i-1}) \sum_{p\mid j,p\mid \frac{k}{x_{i-1}}} \mu(p)\\ &=\sum_{p\mid \frac{k}{x_{i-1}}}\mu(p)\sum_{p\cdot x_{i-1}\mid k} f(i-1,k) \\ \end{aligned} \]

注意到这是一个 Dirichlet 前/后缀和的形式,我们在 dp 时维护它即可。时间复杂度 \(\Theta(m\log m\log \log m)\)

XLII. P8292 [省选联考 2022] 卡牌

XLIII. [ABC293F] Zero or One

XLIV. [AGC029D] Grid game

XLV. CF449D Jzzhu and Numbers

XLVI. [ABC244Ex] Linear Maximization

XLVII. P3309 [SDOI2014] 向量集

XLVIII. [ABC288G] 3^N Minesweeper

XLIX. P7930 [COCI2021-2022#1] Set

L. P4221 [WC2018] 州区划分

LI. P6570 [NOI Online #3 提高组] 优秀子序列

LII. CF1096G Lucky Tickets

LIII. P5330 [SNOI2019] 数论

LIV. P10075 [GDKOI2024 普及组] 切割

LV. [ARC122E] Increasing LCMs

LVI. [ARC179C] Beware of Overflow

LVII. P6089 [JSOI2015] 非诚勿扰

LVIII. P10499 开关问题

LIX. P1737 [NOI2016] 旷野大计算

LX. [AGC027D] Modulo Matrix

LXI. P4284 [SHOI2014] 概率充电器

LXII. [ABC341G] Highest Ratio

LXIII. P4827 [国家集训队] Crash 的文明世界

注意到

\[m^n=\sum_{i=0}^n {n\brace i}m^{\underline{i}}=\sum_{i=0}^n{n\brace i}{m\choose i}i! \]

不妨设

\[f(u;i)=\sum_{v\in \mathrm{subtree}(u)} {\mathrm{dist}(u,v)\choose i} \]

状态转移是平凡的:

\[\begin{aligned} f(u;i)&=[i=0]+\sum_{v\in \mathrm{son}(u)}\sum_{w\in \mathrm{subtree}(v)} {\mathrm{dist}(v,w)+1\choose i} \\ &=[i=0]+\sum_{v\in \mathrm{son}(u)}\sum_{w\in \mathrm{subtree}(v)} \left[{\mathrm{dist}(v,w)\choose i}+{\mathrm{dist}(v,w)\choose i-1}\right] \\ &=[i=0]+\sum_{v\in \mathrm{son}(u)} \left(f(v;i)+f(v;i-1)\right) \end{aligned} \]

这样一来,对于根,答案就是

\[\sum_{i=0}^k {k\brace i}i!\cdot f(\mathrm{root};i) \]

考虑换根。设 \(g(u;i)\)\(u\) 为根时候的 \(f(u;i)\)

\[\begin{aligned} g(v;i)&=f(v;i)+\sum_{w\notin \mathrm{subtree}(v)} {\mathrm{dist}(u,w)+1\choose i} \\ &=f(v;i)+\sum_{w} {\mathrm{dist}(u,w)+1\choose i}-\sum_{w\in \mathrm{subtree}(v)} {\mathrm{dist}(u,w)+1\choose i} \\ &=f(v;i)+\sum_{w} {\mathrm{dist}(u,w)+1\choose i}-\sum_{w\in \mathrm{subtree}(v)} {\mathrm{dist}(v,w)+2\choose i} \\ &=f(v;i)+\sum_{w} {\mathrm{dist}(u,w)+1\choose i}-\sum_{w\in \mathrm{subtree}(v)} \left[{\mathrm{dist}(v,w)+1\choose i}+{\mathrm{dist}(v,w)+1\choose i-1}\right] \\ &=f(v;i)+\sum_{w} {\mathrm{dist}(u,w)+1\choose i}-\sum_{w\in \mathrm{subtree}(v)} \left[{\mathrm{dist}(v,w)\choose i}+{\mathrm{dist}(v,w)\choose i-1}+{\mathrm{dist}(v,w)\choose i-1}+{\mathrm{dist}(v,w)\choose i-2}\right] \\ &=f(v;i)+\sum_{w} {\mathrm{dist}(u,w)+1\choose i}-\sum_{w\in \mathrm{subtree}(v)} \left[{\mathrm{dist}(v,w)\choose i}+2{\mathrm{dist}(v,w)\choose i-1}+{\mathrm{dist}(v,w)\choose i-2}\right] \\ &=g(u;i)+g(u;i-1)-2f(v;i-1)-f(v;i-2) \end{aligned} \]

时间复杂度 \(\Theta(nk)\)

LXIX. [ABC213H] Stroll

套路地设 \(f(u,t)\) 为走到 \(u\) 时已经走过长度为 \(t\) 的路程的方案数。

\([z^i]F_u(z)=f(u,i)\)

我们有显然的转移:

\[F_v(z)=\sum_{u} P_{u,v}(z)\cdot F_{u}(z) \]

分治 NTT 即可,时间复杂度 \(\Theta(n^2T\log T)\)

LXX. P5437 【XR-2】约定

\(n\) 个点的无向图有 \(n^{n-2}\) 棵生成树,每棵生成树有 \((n-1)\) 条边,所以每条边的出现次数为 \(\displaystyle \frac{(n-1)n^{n-2}}{\frac{n(n-1)}{2}}=2n^{n-3}\)

所以答案就是

\[\frac{2n^{n-3}}{n^{n-2}}\sum_{i=1}^{n}\sum_{j=i+1}^n (i+j)^k=\frac{2}{n}\sum_{i=1}^{n}\sum_{j=i+1}^n (i+j)^k \]

考虑怎么快速算右边。注意到,记 \(\displaystyle f(n)=\sum_{i=1}^n\sum_{j=1}^n (i+j)^k\),则原式的两倍等于 \(\displaystyle f(n)-\sum_{i=1}^n(i+i)^k\)。于是我们只需要考虑 \(f(n)\)

注意到,\(f(n)\) 的差分是 \((k+1)\) 次函数,从而 \(f(n)\)\((k+2)\) 次函数,可以 \(\Theta(k)\) 插出。对于右边也是同理的。

所以我们在 \(\Theta(k)\) 内解决了本题。

LXXI. P5442 【XR-2】约定(加强版)

LXXII. P5689 [CSP-S2019 江西] 多叉堆

LXXIII. CF1842H Tenzing and Random Real Numbers

LXXIV. [ABL-F] Heights and Pairs

不会简单容斥/kk

\(P_n\) 为用 \(2n\) 个数构成完美匹配的方案数。我们得到,\(\displaystyle P(n)=\frac{(2n)!}{n!2^n}\)

\(f_i\) 为至少有 \(i\) 个相同对(其他任意)的方案数,那么答案就是 \(\displaystyle \sum_{i=0}^n (-1)^i f_i\)

那么,设 \(f'_i\) 为选出 \(i\) 个相同对的方案数,则有 \(f_i=f_i'\cdot P(n-i)\)

考虑如何求出 \(f'_i\)。我们显然地有

\[f'_x=\sum_{\sum a_i=x}\prod_{i=1}^n {\mathrm{cnt}_i\choose 2a_i}\cdot P(a_i) \]

这显然是一个多项式卷积的形式,套路地设 \(\displaystyle F_i(z)=\sum_{i=0}^{+\infty}{\mathrm{cnt}_i\choose 2i}P(i)\cdot z\),将 \(n\)\(F_i\) 卷起来就可以了。

每次选取最小的两个多项式卷起来,可以证明时间复杂度是 \(\Theta(n\log^2 n)\)

LXXV. CF1585F Non-equal Neighbours

神仙容斥。

正着做反着做都不好做,只好容斥了。

套路地,设 \(f(i)\) 为至少有 \(i\) 个 bad position 的方案数。定义 \(f(i,j)\) 为前 \(i\) 个元素分为 \(j\) 段的方案数。显然,\(f(i)=f(n,n-i)\)

考虑怎么算 \(f(n,i)\)。显然一段内的方案数就是其最小值(记为 \(\mathrm{mn}(l,r)\))。那么,显然有

\[f(i,j)=\sum_{k=0}^{i-1} f(k,j-1)\cdot \mathrm{mn}(k+1,i) \]

注意到,容斥中,乘上 \(1/-1\) 只和 \(f(i)\)\(i\) 的奇偶有关,所以可以直接缩减状态:\(f(i,0/1)\)(其中 \(j\equiv 0/1\pmod 2\)

考虑单调栈,记 \(pos\) 为第一个小于 \(i\) 的位置。那么,

\[f(i,j)=\sum_{k=0}^{pos-1}f(k,j\oplus 1)\cdot \mathrm{mn}(k+1,i)+\sum_{k=pos}^{i-1}f(k,j\oplus 1)\cdot i \]

\[f(i,j)=\sum_{k=0}^{pos-1}f(k,j\oplus 1)\cdot \mathrm{mn}(k+1,pos)+\sum_{k=pos}^{i-1}f(k,j\oplus 1)\cdot i \]

\[f(i,j)=f(pos,j)+\sum_{k=pos}^{i-1}f(k,j\oplus 1)\cdot i \]

不妨记 \(\displaystyle g(i,j)=\sum_{k=1}^i f(k,j)\)。那么,

\[f(i,j)=f(pos,j)+i\cdot \left(g(i-1,j\oplus 1)-g(pos-1,j\oplus 1)\right) \]

时间复杂度 \(\Theta(n)\)

LXXVI. CF1556F Sports Betting

LXXVII. CF1848F Vika and Wiki [duel]

LXXVIII. Subsequences Galore [duel]

LXXIX. CF296B Yaroslav and Two Strings [duel]

LXXX. CF1608D Dominoes [duel]

LXXXI. P10580 [蓝桥杯 2024 国 A] gcd 与 lcm

建议评黄。

每个素因子是独立的,可以分开考虑。以下均基于素因子 \(p\) 讨论

\(\gcd\) 中,\(p\) 的指数为 \(a\)\(\mathrm{lcm}\) 中,\(p\) 的指数为 \(b\)

题目保证了有解,所以 \(a\le b\)

\(a\lt b\) 时,序列中,至少一个位置指数为 \(a\),至少一个位置指数为 \(b\)

正着做不好做,考虑容斥。拿全部方案,减去钦定没有 \(a\) 或没有 \(b\) 的方案,加上钦定两个都没有的方案即可。

\(a=b\) 是平凡的。

时间复杂度为 \(\Theta(Q\sqrt V)\),其中 \(\sqrt V\) 花费在分解素因子上。

LXXXII. CF60D Savior

考虑 \(i\) 能向 \(j\) 传 Laugh 的条件。将能够传播 Laugh 的草坪之间连一条无向边,答案就是连通块数量。

考虑勾股数组的构造。

  • \(a=m^2-n^2\)
  • \(b=2mn\)
  • \(c=m^2+n^2\)

其中 \(m\gt n\),且 \(m,n\) 一奇一偶。

枚举 \(m,n\) 即可,时间复杂度 \(\Theta(V)\)

LXXXIII. CF1119H Triple

题解。

LXXXIV. P1520 因式分解

题解。

LXXXV. P5308 [COCI2018-2019#4] Akvizna

对于二维的情况,DP 方程是显然的:

\[f(i,j+1)=\max_{0\le k\lt i} \left\{f(k,j)+\frac{i-k}{n-k}\right\} \]

考虑到 \(f\) 的凸性,考虑 wqs 二分。那么,就是

\[f(i)=\max_{0\le j\lt i}\left\{f(j)+\frac{i-j}{n-j}-\mathrm{mid}\right\} \]

考虑决策单调性优化。

首先讨论:我们在 \(\mathrm{cnt}\ge k\) 时更新 \(r\gets \mathrm{mid}\)。这意味着,我们需要让能够分成的段数尽量多。

考虑 \(j_1\lt j_2\) 这两个决策点,那么就有 \(f(j_2)+\dfrac{i-j_2}{n-j_2}\ge f(j_1)+\dfrac{i-j_1}{n-j_1}\)

进行 Dirty work。记 \(F(j)=f(j)-\dfrac{j}{n-j}\)

化简得到

\[F(j_2)+\frac{i}{n-j_2}\ge F(j_1)+\frac{i}{n-j_1} \]

于是

\[F(j_2)-F(j_1)\ge -\left(\frac{i}{n-j_2}-\frac{i}{n-j_1}\right) \]

于是

\[\frac{F(j_2)-F(j_1)}{ \frac{1}{n-j_2}-\frac{1}{n-j_1}}\ge -i \]

  • \(Y(i)=F(i)=f(j)-\dfrac{j}{n-j}\)
  • \(X(i)=\dfrac{1}{n-i}\)

这就是【模板】斜率优化 DP。

LXXXVI. Counting Graphs

三 合 一

在本题中,多项式乘法是不必要的,只需要实现 \(\Theta(n^2)\) 的算法即可。

I. 有标号无向连通图计数

算法 \(1\)

\(f(n)\)\(n\) 个节点的无向图个数,\(g(n)\)\(n\) 个节点的无向连通图个数。

显然 \(f(n)=2^{\frac{n(n-1)}{2}}\)

拿所有方案数减去不合法的方案数。枚举与 \(1\) 号节点与多少点在一个联通块内。即有

\[g(n)=f(n)-\sum_{i=1}^n{n-1\choose i-1} f(n-i) \]

注意到这是一个卷积的形式,即可在 \(\Theta(n\log n)\) 内解决本题,即 城市规划

算法 \(2\)

\(f(n)\)\(n\) 个节点的无向图个数,\(g(n)\)\(n\) 个节点的无向连通图个数。\(F(z),G(z)\) 为对应的 EGF

我们有:

\[F(z)=\exp G(z) \]

所以

\[G(z)=\ln F(z) \]

II. 有标号无向 Euler 图计数

\(f(n)\)\(n\) 个节点的无向图(满足每个点度数都是偶数)个数,\(g(n)\)\(n\) 个节点的 Euler 图个数。

显然 \(f(n)=2^{{n-1\choose 2}}\)

理由:第 \(n\) 个点只会与前 \((n-1)\) 个点组成的任意图中度数为奇数的点连边。(想一想,为什么这样第 \(n\) 个点的度数就一定是偶数?)

接下来的推导就同 I. 了。

III. 有标号二分图计数

算法 \(1\)

算法 \(2\)

考虑 \(n\) 个节点的图,对每个点进行黑白染色,满足同色点之间无边的方案数为 \(f(n)\)。显然为

\[f(n)=\sum_{i=0}^{n}{n\choose i}2^{i(n-i)} \]

考虑 \(n\) 个节点的连通二分图的方案数 \(g(n)\),设出 EGF,有

\[F(z)=\exp 2G(z) \]

(为什么要乘以 \(2\):注意到是黑白染色,一个二分图对应两种染色方案。)

那么,\(G(z)=\dfrac{1}{2}\ln F(z)\)

于是,设 \(n\) 个节点的二分图方案数 \(h(n)\),我们就有

\[H(z)=\exp G(z) \]

LXXXVII. P4617 [COCI2017-2018#5] Planinarenje

二分图博弈的模型。

LXXXVIII. [ABC276G] Count Sequences

解法 \(1\)

套路地考虑 GF。那么有

\[f(i,j)=\begin{cases} 1, &i=1\\ \displaystyle \sum_{k\le j,k\not\equiv j} f(i-1,k), &i\gt 1 \end{cases} \]

对应到 GF 上,就是

\[F_i(z)=\begin{cases} \displaystyle \frac{1}{1-z}, & i=1 \\ \displaystyle \frac{z+z^2}{1-z^3}F_{i-1}(z), & i\gt 1 \end{cases} \]

所以,\(\displaystyle F_n(z)=\frac{z^{n-1}}{(1-z^3)^{n-1}(1-z)}(1+z)^{n-1}\)

不妨再卷一个 \(\dfrac{1}{1-z}\)(前缀和),就化为求 \([z^m]\dfrac{z^{n-1}}{(1-z^3)^{n-1}(1-z)^{2}}(1+z)^{n-1}\),也就是求 \([z^{m-n+1}]\dfrac{(1+z)^{n-1}}{(1-z)^{2}(1-z^3)^{n-1}}\)

换个角度思考,\(\dfrac{(1+z)^{n-1}}{(1-z)^2}\) 就是 \((1+z)^{n-1}\) 的二阶前缀和,可以线性求出。

而,

\[\begin{aligned} (1-z^3)^{1-n}&=\sum_{i=0}^{+\infty} (-z^3)^i{1-n\choose i} \\ &=\sum_{i=0}^{+\infty} {n+i-2\choose i}z^{3i} \\ \end{aligned} \]

也是好求的。综上,我们严格线性地完成了本题。

LXXXIX. [ABC295E] Kth Number

注意到,\(\displaystyle \mathbb{E}[X]=\sum_i \mathrm{Pr}(X\ge i)\)。所以只需要算出 \(\mathrm{kth}\ge i\) 的方案数。

想要让 \(\mathrm{kth}\ge i\),也就是 \(\ge i\) 的数需要有至少 \(n-k+1\) 个。

错解

那么,设需要补至少 \(x\)\(\ge i\) 的数,方案数就是 \((m-i+1)^x\cdot m^{\mathrm{cnt_0}-x}\)。然后求个和就行了。

Bug

该式子的意义为“钦定前 \(x\)\(0\) \(\ge m\),剩下的随便选”,但是显然这是不对的。

那么,只需要枚举 \(j\ge x\),然后从 \(x\) 个里面选出 \(j\)\(\ge i\),剩下的全部 \(\lt i\) 即可。时间复杂度 \(\Theta(nm)\)

XC.

求出

\[f_n=\sum_{k=0}^n{2n-k\choose k}(-1)^k2^{2n-2k} \]

的封闭形式。

打表发现,\(f_n=2n+1\)

XCI. CF1109D Sasha and Interesting Fact from Graph Theory

算法 \(1\)

考虑枚举 \((a,b)\) 路径上(不含两端)有多少个点,我们有

\[\begin{aligned} \mathrm{answer}=\sum_{i=0}^{n-2}{m-1\choose i}m^{n-2-i}i!{n-2\choose i}F(i+2) \end{aligned} \]

其中 \(F(i)\) 表示有多少种方式构造一棵 \(n\) 个点的树,使得 \(i\) 个关键点不在同一棵树内。

由广义 Cayley 定理得,\(F(i)=i\cdot {n-i-1}\)

所以答案为

\[\begin{aligned} \mathrm{answer}&=\sum_{i=0}^{n-2}{m-1\choose i}m^{n-2-i}i!{n-2\choose i}F(i+2) \\ &=\sum_{i=0}^{n-2}{m-1\choose i}m^{n-2-i}i!{n-2\choose i}(i+2)\cdot n^{n-i-3} \end{aligned} \]

特判 \(i=n-2\) 的情况即可,时间复杂度 \(\Theta(n\log n)\)

算法 \(2\)

考虑枚举 \((a,b)\) 路径上(不含两端)有多少个点,我们有

\[\begin{aligned} \mathrm{answer}&=\sum_{i=0}^{n-2}{m-1\choose i}m^{n-2-i}(n-2)![z^{n-2}]\left(\frac{\hat T(z)}{z}\right)^2\hat T(z)^i\\ &=(n-2)!\sum_{i=0}^{n-2}{m-1\choose i}m^{n-2-i}[z^{n}]\hat T(z)^{i+2} \end{aligned} \]

XCII. P3166 [CQOI2014] 数三角形

只需要拿选出三个不同点的方案数减去三点共线的方案数。

平凡的,略去斜率不存在或者为 \(0\) 的情况。不妨只考虑斜率 \(\gt 0\) 的情况,最终再乘以 \(2\)

P1447 [NOI2010] 能量采集 的套路可知,设两点横纵坐标差值为 \(\Delta x,\Delta y\),它们之间有 \(\gcd(\Delta x,\Delta y)-1\) 个点。所以我们就要算

\[\begin{aligned} &\sum_{i=1}^{n-1}\sum_{j=1}^{m-1} (n-i)(m-j)(\gcd(i,j)-1) \end{aligned} \]

由于本题中 \(n,m\le 1\,000\),所以做完了。时间复杂度 \(\Theta(nm)\)

XCIII. P10636 BZOJ3518 点组计数

其实就是 XCII 的加强版。

平凡的,略去斜率不存在或者为 \(0\) 的情况。不妨只考虑斜率 \(\gt 0\) 的情况,最终再乘以 \(2\)

P1447 [NOI2010] 能量采集 的套路可知,设两点横纵坐标差值为 \(\Delta x,\Delta y\),它们之间有 \(\gcd(\Delta x,\Delta y)-1\) 个点。所以我们就要算

\[\begin{aligned} &\sum_{i=1}^n\sum_{j=1}^m (n-i)(m-j)(\gcd(i,j)-1) \end{aligned} \]

在 P3166 中我们可以暴力计算,但是本题中我们需要更优的做法。

首先将和式拆开,变成

\[\begin{aligned} =\sum_{i=1}^n\sum_{j=1}^m (n-i)(m-j)\gcd(i,j)-\sum_{i=1}^n\sum_{j=1}^m (n-i)(m-j) \end{aligned} \]

对于右边,显然等于

\[\begin{aligned} &\sum_{i=0}^{n-1}\sum_{j=1}^{m-1}ij \\ =&\frac{n(n-1)}{2}\frac{m(m-1)}{2} \end{aligned} \]

对于左边,显然等于

\[nm\boxed{\sum_{i=1}^n\sum_{j=1}^m \gcd(i,j)}-n\boxed{\sum_{i=1}^n\sum_{j=1}^m i \gcd(i,j)}-m\sum_{i=1}^n\sum_{j=1}^m j\gcd(i,j)+\boxed{\sum_{i=1}^n\sum_{j=1}^m ij\gcd(i,j)} \]

然后你发现这三个都是典题。不过我们不妨推一下:(默认 \(n\le m\)

\[\begin{aligned} &\sum_{i=1}^n\sum_{j=1}^m\gcd(i,j) \\ =&\sum_{i=1}^n\sum_{j=1}^m\sum_{d\mid i,d\mid j}\varphi(d)\\ =&\sum_{d=1}^{n}\varphi(d)\sum_{i=1}^n\sum_{j=1}^m[d\mid i][d\mid j]\\ =&\sum_{d=1}^{n}\varphi(d)\sum_{i=1}^{\lfloor \frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor \frac{m}{d}\rfloor} 1\\ =&\sum_{d=1}^{n}\varphi(d) \left\lfloor \frac{n}{d}\right\rfloor\left\lfloor \frac{m}{d}\right\rfloor \end{aligned} \]

我们记 \(s(n)=\sum_{i=1}^n i\)

\[\begin{aligned} &\sum_{i=1}^n\sum_{j=1}^m i\gcd(i,j) \\ =&\sum_{i=1}^n\sum_{j=1}^m i\sum_{d\mid i,d\mid j}\varphi(d)\\ =&\sum_{d=1}^{n}\varphi(d)\sum_{i=1}^n\sum_{j=1}^mi[d\mid i][d\mid j]\\ =&\sum_{d=1}^{n}\varphi(d)\sum_{i=1}^{\lfloor \frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor \frac{m}{d}\rfloor} id\\ =&\sum_{d=1}^{n}d\cdot \varphi(d) s\left(\left\lfloor \frac{n}{d}\right\rfloor\right)\left\lfloor \frac{m}{d}\right\rfloor \end{aligned} \]

\[\begin{aligned} &\sum_{i=1}^n\sum_{j=1}^m ij\gcd(i,j) \\ =&\sum_{i=1}^n\sum_{j=1}^m ij\sum_{d\mid i,d\mid j}\varphi(d)\\ =&\sum_{d=1}^{n}\varphi(d)\sum_{i=1}^n\sum_{j=1}^mij[d\mid i][d\mid j]\\ =&\sum_{d=1}^{n}\varphi(d)\sum_{i=1}^{\lfloor \frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor \frac{m}{d}\rfloor} id\cdot jd\\ =&\sum_{d=1}^{n}d^2\cdot \varphi(d) s\left(\left\lfloor \frac{n}{d}\right\rfloor\right)s\left(\left\lfloor \frac{m}{d}\right\rfloor\right) \end{aligned} \]

然后就做完了,利用线性筛,时间复杂度为 \(\Theta(n)\)。不理解为什么才开到 \(5\times 10^4\)

Bonus:考虑 \(n,m\le 10^{10}\) 的时候如何做。

posted @ 2024-05-26 21:53  Starrykiller  阅读(100)  评论(0)    收藏  举报