分类: 数学

  • 超-4运算在 Z/nZ 上的收敛性 – 欧拉函数与扩展欧拉定理

    扩展欧拉定理揭示了对于任意模数 $n$,有
    $$
    a^b\bmod n=\begin{cases}
    a^b,&b<\varphi(n)\\
    a^{b\bmod \varphi(n)+\varphi(n)},&\text{otherwise}
    \end{cases}.
    $$

    我们又知道若分解质因数 $x=\sum p_i^{c_i}$,则 $\varphi(x)=x\prod (p_i-1)/p_i$。则若 $x>1$,若 $2\mid x$,$\varphi(x)\leq x/2$;否则,$2\mid\varphi(x)$。记 $\varphi^{(k)}(x)=\underbrace{\varphi(\varphi(\cdots\varphi(}_{k\text{ layers}}x)\cdots))$,则 $\newcommand\bigO{\operatorname{O}}\bigO(\log n)$ 级别的 $k$ 就能使其收敛到 $1$。

    因此对于 $\mathbb{Z}/n\mathbb{Z}$ 上的超-4运算 $a_1^{a_2^{a_3^{⋰}}}$,结合扩展欧拉定理得到,在指数塔的 $\bigO(\log n)$ 层就将得到 $\bmod\varphi(1)+\varphi(1)\equiv 1$ 的指数。从而它是收敛的。 (更多…)

  • MOCK PTS- 20231122 B – 迷失 – 强连通图所有环长度之最大公约数

    题意简述

    给定不含重边的有向图 $G$,设其邻接矩阵为 $A$,定义其元素的“加”为逻辑或,“乘”为逻辑与。问 $A^c,c=1,2,\cdots$ 在何时出现循环节($c=k$),以及最小循环节长度 $d$(即,$A^k=A^{k+d}$,$k,d$ 均最小)。

    题意转化

    在原图上,从 $u$ 出发,可用恰 $b$ 步走到 $v$,则在 $b$ 次迭代后的图上有有向边 $(u,v)$。问最少迭代多少次后图的形态出现循环节。

    强连通图的所有环环长的最大公约数

    任意找一点 $u$,只需考虑经过 $u$ 的所有环。

    考虑有一不经过 $u$ 的环,其长为 $a$;另有一经过所有点的环(本图强连通),其长为 $b$。则有 $\gcd(a,b,a+b)=\gcd(a,a+b)$。

    我们任意找一棵本图的搜索树。设其根为 $u$。设节点 $v$ 的深度为 $\newcommand\dep{\operatorname{dep}}\dep(v)$。设某经过 $u$ 的有限长度的环依次经过了非树边(横叉边、返祖边) $(v_1,w_1),(v_2,w_2),\cdots,(v_t,w_t)$。那么其环长在答案中可以被 $\gcd(|\dep(v_i)+1-\dep(w_i)|,i\in\{1,2,\cdots,t\})$ 取代。

    可得 $w_i$ 一定是 $v_{i+1}$ 的祖先。我们删去 $(v_1,w_1)$,得到另一个环;这环与原来环的长度差为 $\dep(w_1)-\dep(v_1)-1$。这两环均在答案中作出贡献;又由于 $\gcd(a,b)=\gcd(a,b-a)$,则我们将原来的环长等价替换为两个数:其一即 $|\dep(w_1)-\dep(v_1)-1|$,其二为现在的环长。再继续删除 $(v_2,w_2),\cdots$,便等价地换为 $t+1$ 个数。

    因此我们遍历一遍搜索树,就可以在 $\operatorname{O}(n\log n)$ 的时间内求出所有环环长之 $\gcd$。 (更多…)

  • 2023 NOI 春季测试 T2 – 幂次 简略题解

    洛谷题库 P9118 [春季测试 2023] 幂次

    我们有非常易于理解的暴力解法:直接对于 $b=3,4\cdots$,求出所有可以当作底数的 $a$,计算 $a^b$ 后放入数据结构/排序去重;特别处理 $b=2$ 的情况即可。在此不再赘述。

    不过,我们注意到若有正整数 $x$,满足 $x>1,x=a_0^{b_0}\ \ (a_0,b_0\in \mathbb N)$,且 $\forall a,b\in\mathbb N,a_0\neq a^b$(即底数 $a_0$ 不可再开根),那么 $\forall b,b\mid b_0,x=(a_0^{b_0/b})^b$。这意味着假如不去重地暴力添加 $\lfloor\sqrt[b]{n}\rfloor$ 到答案中,上文中 $x$ 将被算 $|\{b\mid b_0\equiv 0\pmod b\}|$ 次。

    于是这就变成莫反的模板题了:记 $g(b)$ 表示“能被 $a^b$ 表出的 $x$ 之数量”,$f(b_0)$ 表示“恰能被 $x=a_0^{b_0}$ 表出,不可被 $x=a^b,b<b_0$ 表出的 $x$ 的数量”。易得 $g(b)=\sum_{b\mid b_0}f(b_0)$,故 $f(b_0)=\sum_{b_0\mid b}g(b)\mu(b/b_0)$。显然,当 $b>\log_2 n$ 时仅有 $a=1$ 满足 $a^b\leq n$,故我们只需计算 $\lfloor\log_2 n\rfloor$ 个 $b$,最后特判 $a=1$。预处理出 $\mu$ 的值,暴力求取反演式,复杂度为 $\operatorname{O}(\log^2 n)$。


    其实并不需要这么麻烦。我们根本不需要反演:根据 $g(b)=\sum_{b\mid b_0}f(b_0)$,假若 $\forall b_0,b_0>b,f(b_0)$ 都已经计算完成,那么我们直接得到 $f(b)=g(b)-\sum_{b\mid b_0,b_0>b}f(b_0)$。由 $b$ 从大往小计算即可,复杂度相同。

  • 再探 FFT – DIT 与 DIF,另种推导和优化

    本文将简单推导两种方式进行的离散傅里叶变换,用另种视角解释并优化算法。参考了 Seniorious yhx-12243 的 NTT 到底写了些什么(详细揭秘) 一文、OI Wiki 快速傅里叶变换 条目 和 rushcheyo 转置原理及其应用 讲稿。

    离散傅里叶变换

    我们计算数列 $\{a_n\}$ 的离散傅里叶变换
    $$
    \newcommand\DFT{\operatorname{DFT}}\DFT(a,n)_k=\sum_{j=0}^{n-1}a_j\mathrm{e}^{\frac{-2\pi\mathrm{i}}{n}kj}
    $$

    由卷积定理和循环卷积得到,我们对同样长为 $n$ 的数列 $\{b_n\}$ 作 $\DFT$,并令数列 $c_k=\DFT(a,n)_k\DFT(b,n)_k$,则有
    $$
    \newcommand\IDFT{\operatorname{IDFT}}\IDFT(c,n)_k=\sum_{j+q\equiv k\pmod n}a_jb_q
    $$

    于是我们可以利用该原理实现常规意义下的数列卷积:有长为 $n$ 的数列 $\{a_n\}$,长 $m$ 的数列 $\{b_m\}$,则将 $a,b$ 高位补 $0$,分别作 $n+m-1$ 位的 $\DFT$,点值相乘后 $\IDFT$ 即可得到 $c_k=\sum_{i+j\equiv k\pmod{n+m-1}}a_ib_j=\sum_{\substack{i+j=k\\0\leq i<n\\0\leq j<m}}a_ib_j$。

    为行文方便,下文采用 $\DFT(a,n)_k=\sum_{i=0}^{n-1}a_i\omega_n^{ik}$ 的定义,其中 $\omega_n=\exp(2\pi\mathrm{i}/n)$,即 $n$ 阶单位根。 (更多…)

  • MOCK quasi-PTS 20230209 日志

    近一个月来第一次赛时通过一道题。真是可喜可贺。

    A – 单调

    一开始以为与网络流相关;后来考虑 DP;结果是个贪心或者乱搞。

    题意简述

    给定长为 $\newcommand\bigO{\operatorname{O}}n\ \ (n\leq 10^5)$ 的序列 $\langle a_i\rangle,a_i\in\{1,2,3\}$。匹配尽可能多的子序列,每个子序列均为 $\langle 1,2,3\rangle$ 或 $\langle 3,2,1\rangle$,且一个位置最多被一个子序列占用。求最大匹配数。 (更多…)

  • 洛谷题库 P6031 Cards 加强版 – 题解与思路重现

    洛谷题库 P6031 Cards 加强版

    对于每一轮对局的 $m!$ 种排列,对于编号为 $a$ 的牌,恒有 $(m-1)!$ 种是以牌 $a$ 为首的。因此一轮可以归为 $m$ 种情况,首张为王牌的概率为 $\frac{1}{m}$。

    这是某场模拟考试给出的部分分:
    $$
    \begin{array}{cccc}
    \text{Subtask}&\text{Constraints}&\text{Points}&\text{Dependencies}\\ \hline
    1&n,m,k\leq 5&2&\\
    2&k=1&2&\\
    3&k\leq 5000&10&1,2\\
    4&m\leq 100&10&1\\
    5&n\leq k&5&\\
    6&k\leq 10^5&10&1,2,3\\
    7&k\leq 5\times 10^6&20&1,2,3,6\\
    8&&41&1\sim 7
    \end{array}
    $$ (更多…)

  • AtCoder AGC058D – Yet Another ABC String – 题解

    AGC058D – Yet Another ABC String

    将 $\mathtt{A,B,C}$ 换成 $0,1,2$。记 $a,b,c$ 是题面中 $\mathtt{A,B,C}$ 的数量,$n=a+b+c$。我们称位置 $i$ 不合法,当且仅当 $S_{i-2}+2\equiv S_{i-1}+1\equiv S_i\pmod 3$。将其视为两条边 $(i-2,i-1),(i-1,i)$,那么所有不合法的位置造成的连边将会形成若干条链。

    考虑容斥。直接钦定指定数量的位置不合法,其方案是难以计算的。又因为容斥系数是 $(-1)^c$,$c$ 为钦定的非法位置数量,那么将整个串分成若干个部分分别计算方案,带上容斥系数相乘后累加,结果不变。故而尝试从上文的链入手:易得对于固定长度的一条链,能够连成它的非法位置集合不变。设 $f(l,0)$ 表示“大小为偶数,且能够连成长度恰为 $l$ 的链”的非法位置集合数量;$f(l,1)$ 则是大小为奇数。染色方案与位置集合方案是独立的;则设整个串按顺序被分成了链 $(l_1,l_2,\cdots,l_s)$(此处的“链”长度均不小于 $3$),答案即为
    $$\sum_{(l_1,\cdots,l_s)}\operatorname{染色方案数}\left((l_1,\cdots,l_s)\right)\prod_{i=1}^s\left((-1)f(l_i,1)+f(l_i,0)\right)$$ (更多…)

  • MOCK quasi-PTS 20221214 日志

    NOIP+?准省选难度?已经到了能力的边缘么?

    但有点奇怪的是,这三道题的思考方向全部正确,T1 甚至只差临门一脚了;可惜部分分给得不那么让人舒服。

    另外,这种“为了卡常而卡常”的时间限制着实令人不适;尤其是当 CWOI 的评测机本身配置落后的情况下。不过这也反过来使得我重新开始关注更底层的常数优化。

    简略题解

    A – 种花

    (更多…)

  • CF1747E – List Generation – 题解

    这道破题拖了我整整一天。

    代数推导

    转化为容斥模型

    题目所给限制可以表述为,$a$ 和 $b$ 均为单调不降的序列,长度相等(记为 $k$),且 $a_1=0,a_k=n,b_1=0,b_k=m,\nexists i\in[2,k],a_i=a_{i-1}\land b_i=b_{i-1}$。

    考虑差分序列 ${a_i}’=a_i-a_{i-1}\quad(i\in[2,k])$,${b_i}’$ 同理,它与原序列形成双射。于是不存在 ${a_i}’={b_i}’=0$ 的差分序列合法。考虑 $\sum_{i=2}^{k}{a_i}’=n$,也就是和为 $n$ 的 $k-1$ 元线性方程组的一组非负整数解;$b’$ 同理。容易计算“钦定至少有 $c$ 个位置不合法”的方案数——利用容斥原理即可得到长为 $k$ 的合法序列对个数为
    $$\sum_{c=0}^{k-2}\binom{k-1}{c}\binom{n+(k-1)-1-c}{(k-1)-1-c}\binom{m+(k-1)-1-c}{(k-1)-1-c}(-1)^c$$ 答案累加上式结果 $\times k$。 (更多…)