比赛日志

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

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

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

More
  • 2023年11月30日

维护连通块

现有一棵 nn 个节点的树。我们构建一最小的连通块 S(l,r)S(l,r),包含编号在 [l,r][l,r] 中的所有节点。多次询问,每次对于任意一对 [l,r][l,r],询问关于这连通块的信息。

如果可以离线/可持久化,此类问题有一通用思路:用扫描线维护“rr 固定时不同 ll 构成连通块的信息”。若 [p,q][l,r][p,q]\subseteq[l,r],则 S(l,r)S(p,q)S(l,r)\supseteq S(p,q);对于一固定的 rr,我们维护 ll 分别取 r,r1,,1r,r-1,\cdots,1(向左拓展)时,连通块的增量。对于点 xx,我们记录 tr(x)t_r(x) 表示 rr 固定时使得 xS(l,r)x\in S(l,r) 的最大的 ll。假设已经对于 rr 维护好了;现在拓展到 r=r+1r’=r+1

x{r,r+1}x\notin \{r,r+1\},则 tr+1(x)tr(x)t_{r+1}(x)\neq t_{r}(x)

  • xxrrr+1r+1 的简单路径上,且
  • tr+1(x)=rt_{r+1}(x)=r

的充分必要条件。

考虑任意 ll。由于 SS 是极小的,故将 r+1r+1“加入”S(l,r)S(l,r) 得到 S(l,r+1)S(l,r+1)需找到 r+1r+1 和连通块在树上最接近节点之间的路径,将路径上所有点加入连通块;由树的性质,此路径是通向 [l,r][l,r] 中任意节点的必经之路,也即 r,r+1r,r+1 的最短路径的某一前缀。又当 l=rl=r 时,S(l,r+1)S(l,r+1) 就是该路径本身;再有 [p,q][l,r]S(l,r)S(p,q)[p,q]\subseteq[l,r]\Longrightarrow S(l,r)\supseteq S(p,q),故本命题得证。

因此,我们需将整条路径上的点的最大出现时间整体覆盖tr+1(x)=rt_{r+1}(x)=rr+1r+1 本身除外,它是 tr+1(r+1)=r+1t_{r+1}(r+1)=r+1)。可以使用珂朵莉树和树剖维护连续的 t(x)t(x) 相同的一段。设 ΦΦ 表示连续段个数。每次覆盖操作会对 O(logn)\newcommand\bigO{\operatorname{O}}\bigO(\log n) 条重链执行“删除若干连续段,加入 O(1)\bigO(1) 个连续段”的操作。又 ΦnΦ\leq n,则 ΦΦ 的总变化量是 O(nlogn)\bigO(n\log n) 的。因此若用对数级别有序关联式容器(如 std::map),总时间复杂度为 O(nlog2n)\bigO(n\log^2 n)(更多…)

More
  • 2023年11月30日

题意简述

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

题意转化

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

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

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

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

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

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

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

More
  • 2023年11月22日

题意简述

给定长为 nn 的序列 aa。要求支持以下操作:

  • 给定 l,r,xl,r,x,将 ai,lira_i,l\leq i\leq r 全部加上 xx
  • 给定 l,r,xl,r,x,将 ai,lira_i,l\leq i\leq r 全部乘以 xx
  • 给定 l,r,xl,r,x,若这是第 kk 次操作,则保护 ai,lira_i,l\leq i\leq r 直到第 k+xk+x 次操作(含),这期间操作 1,21,2aia_i 无效。若 aia_i 已经被保护到 x,x>k+xx’,x’>k+x,则这一保护不会失效。
  • 给定 l,rl,r,输出 i=lrai\sum_{i=l}^{r} a_i,对 109+710^9+7 取余。

n,m2×105n,m\leq 2\times 10^5

半群、双半群模型——线段树到底能维护怎样的信息?——caijianhong 的博客园

(更多…)

More
  • 2023年10月27日

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

A – 单调

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

题意简述

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

More
  • 2023年2月9日

又来了,要不然差临门一脚要不然是编译器出锅悬置指针导致了看似非常不合理的 undefined behavior。这已经不是简单的 frustration 了,要是考场上遇到这种根本没办法查出来的语言相关问题,不就三年 OI 一场空了么?

不过,正是因为考试前从没“用过”悬置指针,才会诱发这样的问题。这再次提醒我们,考场上千万不要使用不熟悉的语法糖,使用平时经大量验证的写法,纵使排版稍欠美观、或代码量增长少许,也是稳定而完备的。

不得不说,这几场“主题模拟赛”的题面中,唯这一场是最上心的。既将足球相关术语用平易近人的方式融合进题面里,又不使其过分冗长而消磨选手耐心。 (更多…)

More
  • 2023年1月23日