2026.4 做题记录

1 P15940

即对于每个时间前缀求 \(x_{\min},y_{\min},x_{\max},y_{\max}\),使得 \(w_{x,y} \geq X\)

四个信息对称,考虑如何求 \(x_{\min}\)

三个维度分别是平面两维和时间轴一维,按照任意一个维度直接扫描线都不好处理,因为还剩下一个复杂的二维信息。

时间轴从后往前扫描线,同时维护 \(x_{\min}\) 所在行的答案。注意到随着时间前移,\(x_{\min}\) 单调不降,而矩形操作正好也是容易在 \(x\) 轴扫描线时动态维护。问题解决,复杂度 \(O(n \log n)\)

2 P15944

先考虑最多经过多少条传送边。初始在点 \(p=1\),每次选取 \(t_{\min}\) 使得 \(s \geq p\),并令 \(p \gets t\),答案即为跳转的次数。

所以问题不难转化为从 \(1\) 开始跳 \(k\) 步跳到 \(n\),每一次跳跃 \(a \rightarrow b\) 的花费为 \(\sum \limits_{[s,t]\subseteq [a,b)} c_{s,t}\),求花费和的最小值。

注意到式子有四边形不等式,所以答案关于 \(k\) 是凸的,wqs 二分,内层 DP 可以线段树优化一下。总复杂度 \(O(n \log n \log V)\)

3 P15947

点分治一下是不是就做完了。

4 P15950

考虑如果图有环,将某个环上边反转,得到的图和原图对于任意询问所得的结果均相同。故只有当图是 DAG 时可能有解。

对于 DAG 来说,每次求出一个入度为 \(0\) 的点,这个东西可以在拓扑排序的时候每确定一条边就尝试判定一下新的点是否入度为 \(0\)。找到入度为 \(0\) 的点 \(u\) 后,考虑求出其所有出边。这个很简单,直接二分,询问时考虑 \(u\) 分别设为 \(0,1\) 即可确定其他的里面是否有对应出边。总次数 \(O(n+m\log n)\)

5 P12451

考虑对大小为 \(1\) 的连通块单独考虑一下,然后分类讨论一下什么的。

6 P12452

考虑子树 DP,\(f_{i,j}\) 表示以 \(i\) 为根子树,最长的以 \(i\) 为一端的,颜色两两不同路径最长长度为 \(j\) 的答案。注意到子树合并其实是做一些简单的合并,相当于两边的一些等价类合并一下,比较简单。复杂度 \(O(nk^2)\)

7 CF1599A

问题重写为:

给定互不相同正整数序列 \(a_1,a_2,\cdots,a_n\),以及序列 \(b_1,b_2,\cdots,b_n\),其中 \(b_i \in \{0,1\}\)

求一个排列 \(p_1,p_2,\cdots,p_n\),并考虑初始 \(k=0\),接着依次对于每个 \(i\)\(1\)\(n\) 选择恰好一个操作:

  1. \(k \gets k + a_{p_i}\)
  2. \(k \gets k-a_{p_i}\)

要求第 \(i\) 次操作后,若 \(b_i=0\),则 \(k<0\),若 \(b_i=1\),则 \(k>0\)

解:

问题一定有解。直接进行构造。

不妨假设 \(a_1 < a_2 < \cdots < a_n\),且 \(b_n=1\)。称一个操作序列为 \(s_1,s_2,\cdots,s_n\),其中 \(s_i \in \{1,2\}\) 表示第 \(i\) 次所选操作。

考虑操作序列 \(s_i=1+\left((n-i)\bmod 2\right)\),也就是 \(s_n=1,s_{n-1}=2,\cdots\),不难说明此时 \(k_n>0\)

\(b_{n-1}=0\),删去 \(s_n\),否则删去 \(s_1\)。问题变为 \(n-1\) 的子问题,此时序列 \(s\) 依然是 \(1,2\) 交替的,不断重复执行此过程即可。

8 CF2147H

神题,咋想到的啊。

把限制加强为任何一组极小割的权值和为偶数。所以可以把偶数边先删掉,只保留奇数边。

如果一个图所有边权为奇数,且每个点度数为偶数,则必然每个极小割集权值和为偶数,此时任意两个点之间最大流为偶数。

我们声称对于任意无向图 \(G=(V,E)\),总能将点集划分为两部分 \(V=V_1\cup V_2,V_1\cap V_2 =\varnothing\),使得 \(V_1,V_2\) 诱导子图中,每个点的度数都是偶数。

Proof:

\(|V|\) 归纳证明。\(|V|=1\) 时显然成立。

\(|V|=n-1\) 时有解,下证 \(|V|=n\) 时有解。

\(\forall i \in V: 2 \mid deg_i\),取 \(V_1=V,V_2=\varnothing\) 符合条件。

否则取某个 \(u \in V\) 使得 \(2 \nmid deg_u\),考虑其所有邻居集合 \(S\),考虑图 \(G'=(V'\setminus \{u\},E \setminus \{(u,x) \mid (u,x)\in E\} \cup \{(a,b)\mid a,b \in S,a< b\})\)。注意这里边集是可重集。\(G'\) 点数为 \(n-1\),根据归纳假设必然有解。对 \(G'\) 构造出解后,考虑令点 \(u\) 的颜色为 \(S\) 内出现次数为偶数的颜色,不难说明这组染色符合图 \(G\) 的限制。

\(\square\)

\(c_{\min} \leq 2\)\(c=1\) 跑最小割树,\(c=2\) 按上面所述构造。

9 P11920

注意到乘积只有 \(2,3,5,7\) 质因数,本质不同的所有位的乘积个数不大,基于此写个数位 DP 即可。

10 P11927

边权乘积考虑 meet in the middle 做一下,后面都不难了。

11 TST 2019

是否存在一一映射 \(f:\mathbb{N}_{+} \rightarrow \mathbb{N}_{+}\) 以及正整数 \(k\),使得可将每个正整数染为 \(k\) 种颜色之一,满足对任意正整数 \(x \neq y\)\(f(x)+y\)\(x+f(y)\) 的颜色都不同?

解:

存在。构造如下:

\(k=2\),对于映射 \(f\),考虑图 \(G\),顶点集为 \(\mathbb{N}_{+}\)\((u,v) \in E\) 当且仅当存在不同正整数 \(x,y\) 使得 \(f(x)+y=u\)\(x+f(y)=v\)。正整数可被二染色使得题意所述限制满足当且仅当图为二部图。

对正整数 \(i\)\(a_i = 4^i\)\(A=\{a_1,a_2,\cdots\}\)\(B=\mathbb{N}_{+} \setminus A\)\(b_i\)\(B\) 中第 \(i\) 小的数。构造映射 \(f(a_i)=b_i\)\(f(b_i)=a_i\),不难说明其为一一映射。接下来我们说明映射 \(f\) 所得图不存在圈,从而图 \(G\) 可被二染色。

只需证明对于任意正整数 \(u\),其邻居至多只有一个比其小,从而若存在圈考虑圈上最大的数则导出矛盾。

不妨设 \((u,v) \in E\)\(v<u\),则存在 \(x,y\) 使得 \(f(x)+y=u,x+f(y)=v\),设 \(\{x,f(x)\}=\{a_i,b_i\},\{y,f(y)\}=\{a_j,b_j\}\),分类讨论:

  1. \(x=a_i,y=b_j\)。此时 \(b_i+b_j=u\)\(a_i+a_j=v\),与 \(u>v\) 矛盾。
  2. \(x=a_i,y=a_j\)。此时 \(b_i+a_j=u\)\(b_j+a_i=v\),由 \(u>v\)\(a_j-b_j > a_i-b_i\),显然 \(a_x-b_x\) 单调递增,故 \(j>i\)\(u=b_i+a_j<2a_j\),满足 \(u \in (a_j,2a_j)\)\(j\) 至多存在一个,故由 \(u\) 可唯一确定 \(j\),从而 \(b_i=u-a_j\) 唯一确定,从而 \(i,j\) 均唯一确定,故 \(v=b_j+a_i\) 唯一确定。
  3. \(x=b_i,y=b_j\)。此时 \(a_i+b_j=u\)\(b_i+a_j=v\),和 \(2\) 类似,\(i\) 可唯一确定,从而 \(v=b_i+a_j\) 唯一确定,且所得 \(v\)\(2\) 所得为同一值。
  4. \(x=b_i,y=a_j\)。此时 \(a_i+a_j=u\)\(b_i+b_j=v\),注意到 \(2,3\)\(u\) 均为 \(4\) 的整数次幂和 \(4\) 的非整数次幂的和,而此时 \(u=4^i+4^j\) 表示方式唯一且必无法表示为 \(2,3\) 中的形式,故与 \(2,3\) 不能同时发生。

综上可知对于任意正整数 \(u\),其邻居中至多一个比其小。故图 \(G\) 无圈。\(\square\)

12 P11923

\(2\times 2\) 子矩形是一个封闭的无法被移除的结构。

两个 \(2 \times 2\) 矩形之间的阶梯也是如此。

这是充要条件,一个点若不在 \(2 \times 2\) 矩形内也不在两个 \(2 \times 2\) 矩形之间的阶梯中则必然可以被删去。

数据结构维护一下,这部分不是很难但细节应该比较多。

13 P11924

优化暴力题。

值域很小所以本质不同状态不多,有很多人是结果相同且 \(a\) 相同的,对此考虑维护等价类,要支持分裂合并上一个线段树就行。

14 Steiner 三元系

QOJ4902

求所有的 \(n\) 使得可以将完全图 \(K_n\) 的边划分为三角形,即每条边 \((u,v)\) 恰好出现在一个三角形内。

对于集合 \(S=\{1,2,\cdots,n\}\) 的三元子集族 \(\mathcal{F}\) 满足 \(S\) 的每个二元子集都恰为 \(\mathcal{F}\) 内一个三元集的子集,则称 \(\mathcal{F}\) 是一个 \(n\) 阶 Steiner 三元系,记为 \(\mathrm{STS}(n)\)

定理 \(1\). 若 \(\mathrm{STS}(n)\) 存在,则 \(n \equiv 1 \pmod 6\)\(n \equiv 3 \pmod 6\)

Proof:

\(\{1,2,\cdots,n\}\) 的二元子集个数为 \(\dfrac{n(n-1)}{2}\),每个三元子集对应三个二元子集,故 \(|\mathrm{STS}(n)|=\dfrac{n(n-1)}{6}\),从而 \(6 \mid n(n-1)\)

另一方面,考虑所有包含 \(1\) 的二元子集,共 \(n-1\) 个。而每个三元子集对应 \(0\)\(2\) 个包含 \(1\) 的二元子集。故 \(2 \mid n-1\)

综上可得 \(n \equiv 1,3\pmod 6\)\(\square\)

定理 \(2\). \(\mathrm{STS}(n)\) 存在当且仅当 \(n \equiv 1,3 \pmod 6\)

为了进行证明,我们先引入一些结构。

定义. 对于集合 \(S\) 以及定义在其上的二元运算 \(\circ\),若对于任意 \(a,b\in S\),方程 \(a \circ x = b\)\(x \circ a = b\) 均存在唯一解,则称 \((S,\circ)\) 为一个拟群。其阶定义为其元素个数。

可以注意到有限拟群等价于拉丁方,考虑其乘法表 \(a_{i,j} = i \circ j\) 即为一个拉丁方。

定义. 若拟群 \((S,\circ)\) 满足对于任意元 \(x\)\(x\circ x=x\),则称 \((S,\circ)\) 为幂等拟群。若对于任意 \(i,j\)\(i \circ j = j \circ i\),称其为对称拟群。

在拉丁方角度下,幂等拟群的主对角线满足 \(a_{i,i}=i\),而对称拟群意味着拉丁方是对称的,即 \(a_{i,j}=a_{j,i}\)

引理 \(1\). 存在 \(n\) 阶幂等对称拟群当且仅当 \(2 \nmid n\)

Proof:

从拉丁方角度考虑,\(i \neq j\)\(1\) 必定出现偶数次,这是因为其为对称拟群。而主对角线仅有 \(a_{1,1}=1\)。故 \(1\) 在拉丁方中出现奇数次。另一方面其出现 \(n\) 次。故 \(2 \mid n\) 时必定不存在 \(n\) 阶幂等对称拟群。

接下来我们说明 \(2 \nmid n\) 时存在 \(n\) 阶幂等对称拟群。

\(S=\{0,1,\cdots,n-1\}\)。令 \(i \circ j = \dfrac{i+j}{2}\bmod n\)。我们声称 \((S,\circ)\) 即为一个 \(n\) 阶幂等对称拟群。

首先说明 \((S,\circ)\) 是拟群。显然 \(i\) 固定时,\(f(x)=\dfrac{i+x}{2}\bmod n\)\([0,n-1] \rightarrow [0,n-1]\) 的双射。所以 \(S\) 显然为拟群。进一步其显然为对称拟群。而 \(i \circ i = \dfrac{2i}{2} \bmod n = i\),故其为一个 \(n\) 阶幂等对称拟群。\(\square\)

回到定理 \(2\) 的证明。我们先证明 \(n \equiv 3 \pmod 6\) 的部分。

Proof:

\(n=6k+3\)。考虑 \(2k+1\) 阶幂等对称拟群 \((T,\circ)\),其中 \(T=\{1,2,\cdots,2k+1\}\)。将 \(S=\{1,2,\cdots,n\}\) 看作 \(T \times \{1,2,3\}\),这里的 \(\times\) 表示集合笛卡尔积。\(\mathrm{STS}(n)=\mathcal{F}\)。构造:

\(\{(a,b),(c,d),(e,f)\} \in \mathcal{F}\) 当且仅当以下条件之一成立:

  1. \(a=c=e,b=1,d=2,f=3\)
  2. \(b=d=1,f=2,e=a \circ c\)
  3. \(b=d=2,f=3,e=a\circ c\)
  4. \(b=d=3,f=1,e=a\circ c\)

先验证 \(|\mathcal{F}|=\dfrac{n(n-1)}{6}\)。显然上述四组条件无交。故 \(|\mathcal{F}|=2k+1+3\dbinom{2k+1}{2}=2k+1+\dfrac{3(2k+1)2k}{2}=(2k+1)(3k+1)=\dfrac{n(n-1)}{6}\)

接下来只需说明任意二元子集 \(\{(a,b),(c,d)\}\) 至少包含于 \(\mathcal{F}\) 中的一个三元集。

  1. \(a=c\)。显然其包含于 \(\{(a,1),(a,2),(a,3)\}\)
  2. \(a \neq c\)\(b=d\)。其包含于 \(\{(a,b),(c,b),(a\circ c,b+1)\}\),其中 \(b+1\) 按模 \(3\) 考虑。
  3. \(a \neq c\)\(b \neq d\)。不失一般性假设 \(b=1,d=2\)。根据幂等拟群性质可知存在唯一 \(x\) 使得 \(a\circ x=c\)。从而其包含于 \(\{(a,1),(x,1),(c,2)\}\)

\(\square\)

为了证明 \(n\equiv 1\pmod 6\) 的部分,我们再引入一些结构。

定义. 对于 \(2n\) 阶拟群 \((S,\circ)\),考虑其拉丁方,若对于任意 \(i \leq n\)\(a_{i,i}=a_{n+i,n+i}=i\),则称其为半幂等拟群。

引理 \(2\). 存在 \(2n\) 阶半幂等对称拟群。

Proof:

考虑映射 \(f(2k)=k,f(2k+1)=n+k\),其中 \(k = 0,1,\cdots,n-1\)。对于不在上述定义域内的整数 \(x\)\(f(x)=f(x \bmod 2n)\)

考虑 \(S=\{0,1,2,\cdots,2n-1\}\)\(x \circ y = f(x+y)\)。我们声称 \((S,\circ)\) 为一个 \(2n\) 阶半幂等对称拟群。

显然 \(f\)\([0,2n-1]\) 范围内为置换,所以其显然为一个 \(2n\) 阶对称拟群。

考虑对于 \(0 \leq i < n\)\(i \circ i = f(2i)=i,(i+n)\circ (i+n)=f(2i+2n)=f(2i)=i\)

综上 \((S,\circ)\) 为一个 \(2n\) 阶半幂等对称拟群。\(\square\)

接下来证明 \(n \equiv 1 \pmod 6\) 的部分。

Proof:

\(n=6k+1\),考虑 \((T,\circ)\) 为一个 \(2k\) 阶半幂等对称拟群,\(T=\{1,2,\cdots,2k\}\)。将 \(S=\{1,2,\cdots,n\}\) 看作 \(\{(n,0)\} \cup (T \times \{1,2,3\})\)\(\times\) 表示集合笛卡尔积。\(\mathrm{STS}(n)=\mathcal{F}\)。构造:

\(\mathcal{F}\) 包含且仅包含:

  1. \(\{(i,1),(i,2),(i,3)\}\),其中 \(1 \leq i \leq k\)
  2. \(\{(n,0),(k+i,1),(i,2)\},\{(n,0),(k+i,2),(i,3)\},\{(n,0),(k+i,3),(i,1)\}\),其中 \(1 \leq i \leq k\)
  3. \(\{(i,1),(j,1),(i \circ j,2)\},\{(i,2),(j,2),(i \circ j,3)\},\{(i,3),(j,3),(i\circ j,1)\}\),其中 \(1 \leq i < j \leq 2k\)

先验证 \(|\mathcal{F}|=\dfrac{n(n-1)}{6}\)。显然上述三类无交。故 \(|\mathcal{F}|=k+3k+3\dbinom{2k}{2}=k(6k+1)=\dfrac{n(n-1)}{6}\)

接下来只需说明任意二元子集 \(\{(a,b),(c,d)\}\) 至少包含于 \(\mathcal{F}\) 中的一个三元集。

  1. \(a=n,b=0\)。不失一般性假设 \(d=1\)。若 \(c \leq k\) 则包含于 \(\{(n,0),(k+c,1),(c,2)\}\),否则包含于 \(\{(n,0),(c-k,3),(c,1)\}\)。下面假设 \((a,b)\neq (n,0)\)\((c,d)\neq (n,0)\)
  2. \(a=c,b\neq d\)。若 \(a \leq k\) 则包含于 \(\{(a,1),(a,2),(a,3)\}\),若 \(a>k\),不失一般性假设 \(b=1,d=2\),由于 \(a \circ a=a-k\),故存在 \(x\) 使得 \(a\circ x = a\),其包含于 \(\{(a,1),(x,1),(a,2)\}\)
  3. \(a \neq c,b=d\)。显然其包含于 \(\{(a,b),(c,b),(a\circ c,b+1)\}\)
  4. \(a \neq c, b \neq d\)。不失一般性假设 \(b=1,d=2\)。存在唯一 \(x\) 使得 \(a\circ x = c\)。若 \(a \neq x\) 则包含于 \((a,1),(x,1),(c,2)\)。否则 \(a \circ a = c\) 当且仅当 \(a>k\)\(c=a-k\)。其包含于 \(\{(n,0),(a,1),(c,2)\}\)

综上 \(\mathrm{STS}(n)=\mathcal{F}\)\(\square\)

15 IMOSL 2001 C4 推广

对于给定的正整数 \(a<b\),称集合 \(\{x,y,z\}\) 是好的当且仅当 \(\{y-x,z-y\}=\{a,b\}\)。证明 \(\mathbb{Z}_{\geq 0}\) 可以被表示为若干好集合的无交并。

Proof:

好集合的形式为 \(\{x,x+a,x+a+b\}\)\(\{x,x+b,x+a+b\}\)

考虑如下过程:

初始集合 \(S=\varnothing\)

每次取出 \(\mathbb{Z}_{\geq 0} \setminus S\) 中最小数 \(x\),若 \(x+a\notin S\) 则取出一好集合 \(T=\{x,x+a,x+a+b\}\),否则取出好集合 \(T=\{x,x+b,x+a+b\}\),然后 \(S \gets S \cup T\)

我们证明以上操作每次得到的三元组两两无交,从而 \(\mathbb{Z}_{\geq 0}\) 可以表示为好集合的无交并。

\(s_i\) 为第 \(i\) 次操作取出的 \(\mathbb{Z}_{\geq 0} \setminus S\) 中的最小数,\(i=1,2,\cdots\)

反证。设第 \(i\) 次操作不符合要求,即 \(\{s_i,s_i+a,s_i+a+b\} \cap S \neq \varnothing\)\(\{s_i,s_i+b,s_i+a+b\} \cap S \neq \varnothing\)。由于 \(s_i\)\(\mathbb{Z}_{\geq 0}\setminus S\) 中的最小数,所以显然 \(s_i+a+b \notin S\)。所以 \(s_i+b \in S\),其所属三元组最小值必为 \(s_i+b-(a+b)=s_i-a\)。而 \(s_i \notin S\),矛盾。\(\square\)

16 P12578

\(2 \nmid k\) 时答案显然不超过 \(2\),黑白染色即可。

否则 \(2 \mid k\) 时答案不小于 \(4\),因为存在四个位置两两曼哈顿距离为 \(k\)。构造是取一些 \(\dfrac{k}{2}\) 边长的等腰直角三角形拼一下之类的。

17 P9247

目标是求出每次操作的生效时间段。

将每次修改 \([l,r]\) 挂在线段树区间上,生效时间段即为每个对应线段树区间生效时间段的 \(\max\)

离线线段树分治,到每个节点时希望求解所有挂在这个点上的区间的生效时间段。

显然和目前区间 \([l,r]\) 无交的区间是不重要,所以我们只关心这个点的祖先和子树内的区间。暴力做法是直接把这些区间提取出来做双指针。但注意到子树内区间个数总和是 \(O(n \log n)\) 的,而祖先区间贡献相对于这个区间是全局的,这意味着只需要把子树区间拉出来双指针,祖先信息不难维护。复杂度 \(O(n \log^2 n)\)

18 P11026

很容易对于每个点判定选这个点后是不是连通,故答案为 \(1\) 可以直接判掉。

否则容易发现当且仅当每个连通块都是完全图时答案可能大于 \(1\),如果有大于 \(2\) 个连通分量答案为 \(2\),否则图是两个连通分量,每部分都是完全图,这个也是容易解决的。总而言之就是进行一些简单的分类讨论和观察即可。

19 P10832

\(\bmod (10^9+7)\) 意义下构造 \(n-1\) 次多项式满足 \(f(x_i)=y_i\),拉格朗日插值后将系数传过去即可。恰好用了 \(30\times n\) 位信息。

拉格朗日插值是可以求出各项系数的。如果比较麻烦还有一些替代方式。其一是考虑求出构造多项式在 \(x=1,2,\cdots,n\) 处的点值并把这些传过去,询问时再做一次拉格朗日插值。另一种做法是直接对 \(n-1\) 次多项式各项系数高斯消元。复杂度都是 \(O(n^3)\)

20 USAMO 2003 P6

在一个正六边形的 \(6\) 个顶点上写着 \(6\) 个和为 \(2003^{2003}\) 的非负整数。允许进行如下的操作:选择一个顶点,将该顶点上的数用相邻两顶点上的数之差的绝对值代替。求证:可以经过有限次操作,使得每个顶点上的数都变为 \(0\)

Proof:

我们用 \((a,b,c,d,e,f)\) 表示正六边形的 \(6\) 个顶点上写的数,两个六元组相等当且仅当他们存在一个循环移位相等。

只需证明 \(2 \nmid a+b+c+d+e+f\) 时总能经过有限次操作使得 \(a=b=c=d=e=f=0\),从而由 \(2 \nmid 2003\)\(2 \nmid 2003^{2003}\),故原命题成立。

\(m = \max\{a,b,c,d,e,f\}\),注意到操作过程中 \(m\) 单调不增,考虑对 \(m\) 归纳证明。

构造两个过程:

  1. \(2 \nmid a+b+c+d+e+f\) 时,进行有限次操作,使得 \(a,b,c,d,e,f\) 中恰有一个为奇数。
  2. \(a,b,c,d,e,f\) 恰有一个为奇数时,进行有限次操作,使得 \(m = \max\{a,b,c,d,e,f\}\) 变小,且六个数之和仍为奇数或所有数为 \(0\)

过程 \(1\)

由于 \(2 \nmid a+b+c+d+e+f\),不失一般性地假设 \(2\nmid a+c+e\)\(2 \nmid a\)。若 \(2 \mid c\)\(2 \mid e\),依次执行操作 \((b,d,f,a,f)\) 得到一个仅有 \(2 \nmid b\) 的局面。否则 \(2 \nmid c\)\(2 \nmid e\),依次执行操作 \((b,d,f,c,e)\),得到一个仅有 \(2 \nmid a\) 的局面。故有限次操作内可以从 \(2 \nmid a+b+c+d+e+f\) 的状态变为有且仅有 \(2 \nmid a\) 的状态。

过程 \(2\)

不失一般性假设 \(2 \nmid a\),且 \(2 \mid b,c,d,e,f\)。若 \(\max\{a,b,c,d,e,f\}=a\)。如果 \(c=e=0\), 依次执行操作 \((d,b,f,a,b,f)\) 可使全部数变为 \(0\)。否则不妨设 \(c>0\),依次执行操作 \((b,f,a,f)\),此时恰有 \(2 \nmid b'\)\(b'=a-c<a\),故最大值严格减小且总和仍为奇数。若 \(\max\{a,b,c,d,e,f\} \neq a\),则 \(b,c,d,e,f\) 中某些数为最大值。依次执行操作 \((b,c,d,e,f)\),此时有且仅有 \(2 \mid f'\),且 \(f'=|e'-a| < f\),故最大值严格减小。

命题对 \(\max\{a,b,c,d,e,f\}<m\) 成立时,通过上述过程不难说明 \(\max\{a,b,c,d,e,f\}=m\) 时命题成立。\(\square\)

21 ARC217D

考虑 \(i \gets i + 1\) 对选的集合发生的变化。注意到应该是有一个位置从不选变为选了,所以到了这个位置买完后余额为 \(0\),从而后缀内的所有位置都会被清空。

维护集合 \(S\) 表示选的位置。\(S\) 内相邻两个位置之间的 \(a\) 的最小值会对未来某个时刻产生贡献。直接模拟一下就行。ST 表预处理区间 RMQ,复杂度 \(O(m + n\log n)\)

22 ARC217E

考虑每条边两侧子树大小分别为 \(a_i,b_i\),即求 \(s=\sum a_ib_i\) 的期望。

\(t=0\)\(s\) 不难求出。考虑 \(t \gets t+1\) 时发生的变化。

假设目前点数为 \(n\),边数为 \(n-1\)\(t\) 时刻答案为 \(s\),求 \(t+1\) 时刻答案。

每条边有 \(\dfrac{1}{n-1}\) 的概率成为所选边,\((a_i,b_i)\rightarrow (a_i+1,b_i),(a_i,b_i+1)\),增量 \(\Delta s=(a_i+1)b_i+(b_i+1)a_i-a_ib_i=a_ib_i+a_i+b_i=a_ib_i+n\)。所以 \(\Delta s\) 期望即为 \(n+\dfrac{s}{n-1}\)

每条边还有 \(\dfrac{n-2}{n-1}\) 的概率不成为所选边,有 \(\dfrac{a_i-1}{n-1}\) 的概率 \((a_i,b_i)\rightarrow (a_i+1,b_i)\),增量 \(\Delta s=b_i\),有 \(\dfrac{b_i-1}{n-1}\) 的概率 \((a_i,b_i)\rightarrow (a_i,b_i+1)\),增量 \(\Delta s = a_i\)。故 \(\Delta s\) 在这条边上的期望为 \(\dfrac{a_i-1}{n-1}b_i+\dfrac{b_i-1}{n-1}a_i\),这个式子也只有 \(a_ib_i\) 项,\(a_i+b_i=n\) 直接计算。所以 \(t \gets t+1\) 时不难计算 \(s\) 增量。问题解决。复杂度 \(O(n+k)\)

23 P11024

染色倒着操作变为每次将区间内没有染过色的位置染成某个颜色。

显然有一个暴力。每次取出一个操作 \((l,r,c)\) 使得区间 \([l,r]\) 中每个位置要么目标颜色为 \(c\) 要么已被染过色。复杂度 \(O(n^2)\)

考虑对此优化。我们希望将一个点染色后,能找出所有新的符合要求的 \((l,r,c)\)。不妨考虑将点 \(i\) 染色,考虑找到 \(i\) 左侧最靠右的未染色位置 \(x\),和 \(i\) 右侧最靠左的未染色位置 \(y\),则 \((x,y)\) 的所有子区间都是全部染过颜色的。将区间挂在 \(l\) 上维护 \(r\) 的最小值,直接用线段树就能把区间提取出来。另一方面,如果区间包含 \(x\),必然有 \(c=b_x\)。找到 \(x\) 左侧最靠右未染色且 \(b_k \neq b_x\)\(k\),则 \((k,i)\) 的所有满足 \(c=b_x\) 的子区间都符合条件。对于每种 \(c\) 单独维护线段树即可解决。包含 \(y\) 是同理的。复杂度 \(O(n \log n)\)

24 CMO 2010 P5

设整数 \(n \geq 3\)。在点 \(A_1, A_2, \cdots, A_n\) 及点 \(O\) 处放置了一些卡片,一次操作是指:

(1) 若某点 \(A_i\) 处的卡片数目不少于 \(3\),则可从中取出 \(3\) 张,在点 \(A_{i-1}, A_{i+1}\)\(O\) 处各放一张(这里 \(A_0 = A_n\), \(A_{n+1} = A_1\));或者

(2) 若点 \(O\) 处的卡片数目不少于 \(n\),则可从中取出 \(n\) 张,在点 \(A_1, A_2, \cdots, A_n\) 处各放一张。

求证:只要放置于这 \(n + 1\) 个点处的卡片总数不少于 \(n^2 + 3n + 1\) 则总能通过若干次操作,使每个点处的卡片数目均不少于 \(n + 1\)

Proof:

显然可以操作使得 \(A_i \leq 2\),从而 \(O \geq n^2+3n+1-2n=n^2+n+1\),可以进行 \(n\) 次操作,从而使得 \(A_i \geq n\)

从而可得到 \(A_i > 0\) 的状态。可以进行一操作使得最终 \(A_i \in \{1,2,3\}\)。只需证存在操作方法使得 \(\sum A_i \leq 2n\),则 \(O \geq n^2+n+1\),从而可以进行 \(n\) 次操作二,使得 \(A_i \geq n+1\)\(O \geq n + 1\)

注意到若存在两个相邻的 \(3\),可以进行操作将这两个点都变为 \(1\),不影响其他点。进一步,形如 \(3,2,2,\cdots,2,3\) 均可进行类似操作。设 \(A_i\) 中有 \(x\)\(1\)\(y\)\(2\)\(z\)\(3\),易知 \(x \geq z\)\(z \leq \lfloor \dfrac{n}{2} \rfloor\)。从而 \(s=\sum \limits_{i=1}^n A_i \leq 3z+z+2(n-2z)=2n\)\(\square\)

25 P15586

\(\{0,1,\cdots,n\}\) 平分为六部分 \(A_1,A_2,\cdots,A_6\)。询问 \(A_x,A_x \cup A_y,A_x \cup A_y \cup A_z\),其中 \(x,y,z\) 互不相等,\(x,y,z \in [1,6]\)。询问次数恰为 \(\dbinom{6}{1}+\dbinom{6}{2}+\dbinom{6}{3}=41\)

考虑如何据此求出答案。类似容斥。

考虑子集族内任意二元或三元子集 \(S\)\(A_1,A_2,\cdots,A_6\) 中的情况。

若分别属于三部分,容斥系数 \(c_3=1\)

属于两部分,其在上面的贡献为 \(4\),故 \(c_2=-3\)

属于一部分,其在上面贡献为 \(-5\),故 \(c_1=6\)

26 P15589

单侧递归线段树做一下。

27 IMOSL 2019 A7

设函数 \(f:\mathbb{Z}\rightarrow \mathbb{Z}\),满足对任意整数 \(x,y\) 均有 \(f(f(x+y)+y)=f(f(x)+y)\)。称整数 \(v\) 是 “\(f\)-稀有”的,如果 \(X_v = \{x\in \mathbb{Z} \mid f(x)=v\}\) 是有限的非空集合。求证:

(1) 存在这样的函数 \(f\)\(f\)-稀有的整数。

(2) 不存在这样的函数 \(f\) 有多于一个 \(f\)-稀有的整数。

解:

(1)

考虑函数 \(f(x) = \begin{cases} 0 && x= 0 \\ 2^{v_2(x)+1} && x \neq 0\end{cases}\)

其中 \(v_2(x)\) 为最大的整数 \(k\) 使得 \(2^k \mid x\)

下证 \(f\) 为一个满足要求的函数。

首先,\(X_0 = \{0\}\),故 \(0\) 为一个 \(f\)-稀有整数。

接下来证明 \(\forall x,y \in \mathbb{Z}: f(f(x+y)+y)=f(f(x)+y)\)

\(f(x+y)=f(x)\) 则显然成立,否则 \(f(x+y)\neq f(x)\),即 \(v_2(x+y)\neq v_2(x)\)。若 \(v_2(x)<v_2(y)\) 则必有 \(v_2(x+y)=v_2(x)\)。故 \(v_2(x) \geq v_2(y)\)。从而 \(f(f(x)+y)=f(2^{v_2(x)+1}+y)=2^{v_2(y)+1}\)。而 \(v_2(x+y)\geq v_2(y)\),故 \(v_2(f(x+y))+1>v_2(y)\)。To be done.

28 CGMO 2011 P7

从左到右编号为 \(B_1, B_2, \cdots, B_n\)\(n\) 个盒子共装有 \(n\) 个小球。每次可以选择一个盒子 \(B_k\),进行如下操作:

(1) 若 \(k = 1\)\(B_1\) 中至少有 \(1\) 个小球,则可从 \(B_1\) 中移 \(1\) 个小球至 \(B_2\) 中;

(2) 若 \(k = n\)\(B_n\) 中至少有 \(1\) 个小球,则可从 \(B_n\) 中移 \(1\) 个小球至 \(B_{n-1}\) 中;

(3) 若 \(2 \leq k \leq n-1\)\(B_k\) 中至少有 \(2\) 个小球,则可从 \(B_k\) 中分别移 \(1\) 个小球至 \(B_{k+1}\)\(B_{k-1}\) 中。

求证:无论初始时这些小球如何放置,总能经过有限次操作使得每个盒子中恰有 \(1\) 个小球。

Proof:

\(n\) 归纳。\(n=1\) 时显然成立。

当命题对 \(n\) 成立,下证命题对 \(n+1\) 证明。

考虑不断对 \([2,n+1]\) 进行操作直至 \(B_2,B_3,\cdots,B_{n+1}\) 均小于等于 \(1\)。可以说明这是可行的,因为对 \([2,n+1]\) 进行操作总会使 \(B_1,B_2,\cdots,B_{n+1}\) 序列的字典序变大。

此时 \(\sum \limits_{i=2}^{n+1} B_i \leq n\)。不断进行操作 \(1\) 直至 \(\sum \limits_{i=2}^{n+1}B_i = n\),此时 \(B_1=1\),根据归纳假设可以使 \(B_2,B_3,\cdots,B_{n+1}\) 均等于 \(1\)。对于 \(2\) 进行的操作可以改为操作后对 \(1\) 进行一次操作。从而命题对 \(n+1\) 成立。\(\square\)

29 QOJ4243

IOI 2026 中国国家集训队作业(试题泛做)53。

\(1\)\(n\)\(c_i\) 从小到大排序,依次考虑每个点 \(u\),令新颜色 \(w_u\) 为邻居的 \(\mathrm{MEX}\)。不难说明 \(w\) 的颜色数小于等于原来给定的染色颜色数。另一方面考虑最大的颜色 \(x\),其邻居必有 \(x-1\),邻居的邻居必有 \(x-2\),以此类推,存在一条这样的路径使得其上颜色为 \(1,2,\cdots,x\)

30 IMOSL 2005 C5

\(n\) 张书签,每张书签一面为白色,另一面为黑色。将它们排成一排,且所有书签的白色一面朝上。每次操作(如果可能的话)是拿掉一张白色的面朝上的书签(非最靠边的书签),并与这张书签相邻的两张书签翻到另一面。求证:最后只剩下两张书签的充要条件是 \(n - 1\) 不能被 \(3\) 整除。

Proof:

\(0\) 表示白色,\(1\) 表示黑色。操作等同于每次选一个不靠边的 \(0\),将其删去并将两边的值取反。

首先证明 \(3 \nmid n-1\) 时有解。注意到存在操作 \(00000 \rightarrow 0011 \rightarrow 101 \rightarrow 00\) 可以将 \(n\) 的问题变为 \(n-3\) 的子问题。\(n=2,3\) 时显然有解,故归纳可证 \(3 \nmid n-1\) 时有解。

下证 \(3 \mid n-1\) 时无解。操作过程中 \(1\) 的个数奇偶性不变,故最终必定变为 \(00\)\(11\),考虑对序列 \(a\)\(f(a)=\sum \limits_{i=1}^n [a_i=0](-1)^{\sum \limits_{j=1}^i a_j}\)。不难说明操作过程中 \(f(a) \bmod 3\) 不变。而初始 \(f(a)=n+1\equiv 1 \pmod 3\),最终状态 \(f(a)\equiv 0,2 \pmod 3\),矛盾。\(\square\)

31 P14965

把这个东西改成维护一些标记,然后修改颜色时对标记进行修改。最终问题会转化成比较好看的形式。

32 QOJ1817

IOI 2026 中国国家集训队作业(试题泛做)27。

我们证明总存在解,对 \(n\) 归纳。

\(n=1\) 时命题显然成立。

\(n>1\) 时,若 \(a_1=a_2=\cdots=a_n=0\) 则命题显然成立。否则取 \(d\) 为所有 \(a_i\) 中最高二进制位。考虑将所有数划分为 \(S_0\)\(S_1\) 表示这一位为 \(0\) 的与为 \(1\) 的。显然 \(S_0,S_1 \neq \varnothing\),根据归纳假设存在置换 \(\sigma_0 : S_0 \rightarrow S_0\) 使得 \(\forall x \in S_0 : \sigma_0(x) \operatorname{and} x = 0\)。此外,考虑 \(S'=S_1 - 2^d\),对于任意 \(x \in S'\) 与其任意真子集 \(y\),显然有 \(y+2^d \in S_1\),故 \(y \in S'\)。故 \(S'\) 是一个符合题意限制的集合,存在其上置换 \(\sigma_1: S' \rightarrow S'\) 使得 \(\forall x \in S':\sigma_1(x)\operatorname{and} x = 0\)

\(S=\{a_1,a_2,\cdots,a_n\}\),考虑映射 \(\sigma: S \rightarrow S\)。其中对于 \(x \in S_0 \setminus S'\)\(\sigma(x)=\sigma_0(x)\),对于 \(x \in S_1\)\(\sigma(x)=\sigma_0(x-2^d)\),对于 \(x \in S'\)\(\sigma(x)=\sigma_1(x)+2^d\)。容易说明 \(\forall x \in S: \sigma(x) \operatorname{and} x = 0\)。接下来说明 \(\sigma\) 是单射,从而 \(\sigma\) 是置换。容易发现 \(x \in S_0 \setminus S'\)\(x \in S_1\) 对应的 \(\sigma(x)\) 值域恰为 \(S_0\),而 \(x \in S'\)\(\sigma(x)\) 值域恰为 \(S_1\)。至此不难说明 \(\sigma\) 为置换。\(\square\)

原问题根据上述过程归纳构造即可。复杂度 \(O(n \log V)\)

33 P15253

先解决子问题:对于集合 \(S\),如何求出集合 \(T=\{x \mid \exists X \subseteq S:\sum \limits_{y \in X} y = x\}\)\(\mathrm{MEX}\)

依次考虑 \(S\) 内所有数 \(x_1,x_2,\cdots,x_n\)。维护变量 \(s\) 表示集合的子集和目前能覆盖范围 \([0,s]\)。初始 \(s=0\)。考虑到 \(x_i\) 时,若 \(x_i \leq s+1\),则令 \(s \gets s + x_i\)。否则若 \(x_i>s+1\),则 \(s+1\) 必定无法表示为某个子集的和,答案即为 \(s+1\)

考虑原问题,一个边双连通分量显然可以定向为一个强连通分量,考虑耳分解的过程易见。对原图缩点得到一棵树。考虑 \(u\)\(v\) 的树上路径对应的所有边双连通分量内所有边权构成的集合 \(S\),问题等价于对 \(S\) 求上述问题的答案。

上述过程需要从小到大考虑所有数,显然难以扩展到多组询问。考虑直接对 \(s\) 下手。初始 \(s=0\),考虑每次求出集合内小于等于 \(s+1\) 的数的和 \(t\),若集合内不存在 \([s+1,t+1]\) 之间的数,则 \(\mathrm{MEX}\) 即为 \(t+1\)。否则 \(s \gets t\)\(O(1)\) 次操作 \(s\) 至少翻倍。主席树维护结构,复杂度 \(O(n \log n \log V)\)

34 P15494

考虑 \(E'=E\cup E_2\),即求一个 \(E_2\) 使得其不连通,最大化 \((V,E')\) 的边连通度。

显然 \(E_2\) 为两个完全图的并。问题相当于原图染色使得黑白之间边数最大,只有奇环无法染色,其他都能构造到上界。

35 QOJ862

IOI 2026 中国国家集训队作业(试题泛做)6。

比较简单,大概是你把式子拆出来发现只需要排一下序别的都不难。

36 2023 巴尔干数学奥林匹克 P4

求最大的整数 \(k \leq 2023\),使得对于任意 \(A \subseteq [2023]\)\(|A|=k\),存在 \(B \subseteq [2023]\setminus A\),使得 \(\sum \limits_{i \in A} i = \sum \limits_{j \in B} j\)

解:

\(\sum \limits_{i \in A} i\) 显然不能超过 \(\dfrac{\sum \limits_{i=1}^{2023}i}{2}\),所以 \(\sum \limits_{i=2023-k+1}^{2023} i \leq 1023638\),接得 \(k \leq 592\)

接下来我们证明 \(k=592\) 符合要求,从而 \(k_{\max} = 592\)

\(s= \sum \limits_{i \in A}i\),则 \(s \leq \sum \limits_{i=1432}^{2023} i = 1022680\)

\([2023] \setminus A\) 中存在子集 \(B\) 使得 \(\sum \limits_{i \in B} i = \dfrac{2023 \times 2024}{2} - 2s\),则 \(\sum \limits_{i \in \left([2023]\setminus A \setminus B\right)} i = s\) 符合要求。故只需证存在 \(B \subseteq [2023] \setminus A\) 使得 \(\sum \limits_{i \in B} i = \min\{s,2047276-2s\}=k\)。则 \(k \leq \dfrac{2047276}{3}\)

\(k\)\(2024\) 关系分类讨论:

  1. \(k \geq 2024\) 时,设 \(k=2024a+b\),其中 \(0 \leq b \leq 2023\)。我们先证明 \([2023] \setminus A\) 中存在两个数的和为 \(b\)\(2024+b\)。考虑配对:\((1,b-1),(2,b-2),\cdots,(\lfloor \dfrac{b-1}{2}\rfloor,b-\lfloor \dfrac{b-1}{2}\rfloor)\) 以及 \((2023,b+1),(2022,b+2),\cdots,(\lfloor \dfrac{2023+b}{2}\rfloor,2024+b-\lfloor \dfrac{2023+b}{2}\rfloor)\),每一对和为 \(b\)\(2024+b\),且总对数大于 \(592\) 对,故存在某一对都属于 \([2023]\setminus A\),即他们的和为 \(b\)\(2024+b\)。接下来考虑配对 \((1,2023),(2,2022),\cdots,(1011,1013)\),每一对和为 \(2024\)。而 \(a \leq \dfrac{k}{2024} \leq 337\),而 \(1011-594>a\),故存在 \(a\) 个对中两个数均属于 \([2023]\setminus A\),从而存在一个集合的和为 \(k=2024a+b\)

  2. \(k < 2024\)。注意到 \(s \geq \dfrac{592\times 593}{2}>2023\),所以 \(k=2047276-2s\geq 2047276-2 \times 1022680 = 1916\)。考虑配对 \((1,k-1),(2,k-2),\cdots,(593,k-593)\)。由 \(k \geq 1916\)\(k-593>593\),故存在 \(593\) 对互不相同的数和为 \(k\),其中必有至少一对中两数均属于 \([2023]\setminus A\)\(\square\)

37 2026 波兰数学奥林匹克决赛 P6

设整数 \(n \geq 2\),考虑序列 \(B_1,B_2,\cdots,B_n\),初始满足 \(B_i=0\)。令存在正实数序列 \(a_1,a_2,\cdots,a_n\) 满足 \(\sum \limits_{i=1}^n a_i=1\)。每天早上,对于所有 \(i\)\(B_i \gets B_i+a_i\)。每天晚上,你选择一个 \(i \in [1,n]\),然后 \(B_i \gets 0\)。求证:存在每天选择 \(i\) 的方式,使得任意时刻任意 \(B_i \leq 2\)

Proof:

\(B_i\) 变到大于 \(2\) 所需天数为 \(\lfloor \dfrac{2}{a_i}\rfloor + 1\)。所以 \(B_i\) 的两次相邻操作时刻 \(x,y\) 必然要满足 \(y-x\leq \lfloor\dfrac{2}{a_i}\rfloor\)。记 \(h_i=\lfloor\dfrac{2}{a_i}\rfloor\)。考虑构建二部图 \(G=(X,Y,E)\)\(X=\mathbb{Z}^{+}\)\(Y\) 为若干区间构成可重集,对于每个 \(i\),其包含将 \(\mathbb{Z}^{+}\) 按照 \(\lfloor \dfrac{h_i}{2} \rfloor\) 长度分段构成的所有区间。\((x,[l,r]) \in E \iff x \in [l,r]\)。只需证明图 \(G\) 存在完美匹配,即可还原一组可行的选择方案。

验证 Hall 定理:考虑 \(S \in \mathbb{Z}^{+}\)\(|S|=k\),则 \(|N(S)| \geq \sum \limits_{i=1}^n \dfrac{|S|}{\lfloor \dfrac{h_i}{2}\rfloor} \geq |S|\)\(\square\)

38 THUPC 决赛 2026 K

我们的目标是表示出 \([0,2^{n-1})\) 中的所有数。令 \(w_i\)\(s\) 在二进制第 \(i\) 位下的值。

考虑令 \(1\) 为根,我们希望给边赋权 \(0\)\(1\),使得 \(\forall 2 \leq i \leq n : \bigoplus \limits_{(u,v) \in \mathrm{path}(1,i)} x_{u,v} = w_{i-2}\)

对于边 \(u,v\),令其边权为 \(w_{u-2}\oplus w_{v-2}\),并假设 \(w_{-1}=0\) 即可。原问题解决。

39 CF1844H

先考虑单组询问怎么做。

首先原图可能已经形成一些圈,\(i \rightarrow p_i\),除去本来就不合法的情况外,还剩下若干条链。对于每条链,我们需要为其链尾指定出边为某另外一条链的开头。显然我们只关心每条链长度模 \(3\) 意义下的值。不妨假设长度模 \(3\)\(0,1,2\) 的链的个数分别为 \(a,b,c\)。令所求答案为 \(f(a,b,c)\),对其进行一些观察。

首先有 \(f(a,b,c)=(a+b+c)f(a-1,b,c)\)。这是因为可以选定 \(a\) 中某条链对其选定任意一条链作为出边,且对应链长模 \(3\) 意义下不变。进一步可知 \(f(a,b,c)=(a+b+c)^{\underline{a}}f(0,b,c)\)。所以我们只需要求 \(f(0,b,c)=g(b,c)\) 的值。

类似 \(f(a,b,c)\) 通过钦定 \(a\) 的出边从而导出递推,对于 \(g(b,c)\) 做类似的事情。可以对 \(b\) 钦定出边,以及对 \(c\) 钦定出边,从而导出两个递推式。分别是:

  1. \(g(b,c)=(b-1)g(b-2,c+1)+c\times f(1,b-1,c-1)=(b-1)g(b-2,c+1)+c\times (b+c-1)\times g(b-1,c-1)\)
  2. \(g(b,c)=(c-1)g(b+1,c-2)+b\times f(1,b-1,c-1)=(c-1)g(b+1,c-2)+b\times (b+c-1)\times g(b-1,c-1)\)

至此按照 \(b+c\) 从小到大的顺序可以递推出所有 \(g(b,c)\),复杂度 \(O(n^2)\),不足以通过。

观察两个转移,可知 \(g(b,c),g(b-2,c+1),g(b-1,c-1)\) 以及 \(g(b,c),g(b+1,c-2),g(b-1,c-1)\) 这两个三元组都满足确定其中两个值就可以确定第三个值。我们考虑某个状态 \((x,y)\) 表示已知 \(g(x,y)\)\(g(x+1,y+1)\)。则不难通过上述等式完成 \((x,y)\rightarrow (x-1,y+2)\) 以及 \((x,y)\rightarrow (x+2,y-1)\) 的转移。从而可以进行 \((x,y)\rightarrow (x+1,y+1)\) 的转移。注意到修改对 \(b,c\) 影响是 \(O(1)\) 的且均可以通过上述过程 \(O(1)\) 得到新的答案,故问题在 \(O(n\alpha(n))\) 的复杂度内得以解决,复杂度瓶颈在于并查集。

40 CCPC 2024 重庆 M

先考虑给定序列 \(a_1,a_2,\cdots,a_n\) 怎么求答案。

二分答案 \(x\),判定答案是否可以大于等于 \(x\)。令 \(b_i=[a_i \geq x]\),操作等价于每次选定一个长度为奇数的区间 \([l,r]\),将 \(b_l,b_{l+1},\cdots,b_r\) 覆盖为这段区间原本的众数。注意到若存在 \(1 \leq i < j \leq n\),且 \(b_i=b_j=1\)\(j-i \leq 2\),那么最终一定可以使得整个序列 \(b\) 全变为 \(1\)。而若不存在则显然不行。故其为充要条件。

对于原问题。枚举 \(x\),希望计算有多少满足 \(a_i \in [l_i,r_i]\) 的序列答案至少为 \(x\)。只需要计算有多少序列不存在 \(i,j\) 满足上述条件。对此可以直接进行 \(O(n)\) 的 DP。至此我们得到了一个 \(O(nV)\) 的算法。

然后我们声称将 \(l,r\) 一起排序将数轴切开,每段内部前缀和是不超过 \(n\) 次多项式。算 \(n\) 个位置然后拉格朗日插值即可。复杂度 \(O(n^3)\)

41 CCPC 2024 哈尔滨 E

\(i\) 个弹珠到达 \(0\) 的时刻为 \(t_i=\dfrac{-x_{c_i}}{v_i}\),问题即求 \(t_1,t_2,\cdots,t_m\) 的中位数的期望。

先编一个多项式复杂度做法。设计一个全序关系以使得中位数唯一。然后枚举 \(x,y\) 表示中位数为 \(t_x\)\(c_x=y\)。对于每个 \(i \neq x\) 可以求出有多少种 \(c_i\) 使得其时间在全序关系下小于 \((x,y)\) 对应时间,然后做一个背包。复杂度 \(O(n^4)\)。这个背包显然可以做撤销而不用每次都重做一次,故可以做到复杂度 \(O(n^3)\)

42 THUPC 2026 决赛 F

假设两人目前所处 \(i,j\),感性理解可知 \(|i-j|\) 大于某个阈值的状态都是无意义的,精细实现一下状态数很少,因为只要存在一方能走三步把对面卡住就爆了,所以并没有多少有意义状态。

43 THUPC 2026 决赛 C

求出 \(g_i = \max \{j < i \mid a_j \oplus a_i < m\}\)。则前缀答案容易通过 \(f_i=\max\{f_{i-1},f_{g_i-1}+1\}\) 计算而来。

这个东西直接上 Trie 即可做到 \(O(n \log V)\),不够优秀。

考虑原问题的匹配结构,不难发现其可以贪心。维护多重集 \(S=\varnothing\),依次考虑 \(i\)\(1\)\(n\),向 \(S\) 内加入 \(a_i\),若此时 \(S\) 内存在两个数异或小于 \(m\) 则得到一组结尾为 \(i\) 的匹配并清空 \(S\),不难说明正确性。

注意到若集合 \(S\) 每个数的二进制最高位均不超过 \(m\) 的二进制最高位,且 \(S\) 内任意两个数异或均大于等于 \(m\),则 \(|S| = O(1)\)。维护 \(S\) 时,将所有数按照大于 \(m\) 二进制位分组,只维护小的位即可。复杂度 \(O(n+V)\)

44 ARC217C

这个结构是向前缀连边的二部图匹配,以任意顺序考虑左侧点并选取能匹配的最大的均为正确的贪心策略,所以你最后得到的就是最大匹配。

考虑 Hall 定理,随便 DP 一下做完了。

45 广东省队集训 Day1 T1

这个不会真的还有救吗?

考虑删去 \(1\) 构成的每个白连通块,其上每个点的 \(1\) 邻居个数为 \(d_i\),则对这个连通块答案显然不超过 \(\lfloor \dfrac{\sum d_i}{2}\rfloor\),构造是简单的,转化为每个点 \(d_i \leq 1\),取出一个 DFS 树就可以变成树上问题。

46 广东省队集训 Day1 T2

考虑询问集合 \(S\) 得到结果 \(x \in S\)\(x \notin S\),本质即为得知 \(\forall y \in [n] \setminus S : x \neq y\) 或者 \(\forall y \in S: x \neq y\)。由于至多说谎一次,所以若 \(y \neq x\) 的信息被获得了两次或以上则可完全确定 \(y \neq x\)

对此我们只关心 \(y \neq x\) 获得了 \(0\) 次与 \(1\) 次的 \(y\) 的个数,也就是 \(u,v\),对此 DP 可以得到一个 \(O(n^4)\) 的算法。打表观察 \(f(u,v)\leq i\) 的边界,是一个阶梯状物,并且具体结构可以观察出来?

47 ICPC 2023 济南区域赛 E

二部图匹配转化为网络流最大流,求出残量网络上 \(S\) 能到的左部点的个数与能到 \(T\) 的右部点个数相乘即为答案。

48 ICPC 2023 济南区域赛 C

考虑构造的图 \(G=(V,E)\),其中 \(|E|=m\)\(\forall i \in V: deg_i \leq d\)

取出 \(G\) 的一棵 DFS 生成树 \(T\),构建一个新的图 \(G'\),初始和 \(G\) 相同。对于每条非树边 \((u,v)\),新建点 \(v'\),断开边 \((u,v)\) 并加入边 \((u,v')\)。设 \(G'=(V',E')\),显然有 \(|E'| = m\)\(\forall i \in V':deg_i \leq d\)。考虑 \(G\) 上的一个极大独立集 \(C\),在 \(G'\)\(V\) 上的点状态不变,\(V'\setminus V\) 上的点的状态为其唯一邻居状态取反。注意到此时得到了一个 \(G\) 的极大独立集向 \(G'\) 的极大独立集的单射,而 \(G'\) 为一棵树,故一定存在最优解使得图 \(G\) 为树。

\(21\) 个点的本质不同无根树个数不大,暴力枚举就行。计算极大独立集个数只需要一个简单的树上 DP。

49 ICPC 2023 济南区域赛 L

先设计一个多项式复杂度 DP。\(f_{i,j}\) 表示 \([1,i]\) 选了 \(j\) 段,且第 \(i\) 段选了的最大答案。\(g_{i,j}\) 类似但表示的是 \(i\) 没有选的答案。

显然有 \(g_{i,j}=\max\{f(i-1,j),g(i-1,j)\}\)。考虑 \(f\) 的转移,枚举末尾连续选的数量。我们有 \(f_{i,j} = \max \limits_{k} \{g_{k,j-i+k}+w(k+1,i)\}\)\(w\) 是包含于这段子区间的区间贡献和。

注意到 \(k-(j-i+k)=i-j\),考虑按照 \(i-j\) 从小到大计算 DP 值。依次对于所有 \(i\) 要维护一个数据结构,支持末尾加入,前缀加,查询全局最大值。直接做是 \(O(n^2 \log n)\) 的。不足以通过。

考虑到操作是前缀加正数,只有前缀最大值可能有用,维护这些数对应的段,修改就是将一个段和后面的差距变小,有可能合并两个段。使用并查集维护。复杂度 \(O(n^2\alpha(n))\)

50 广东省队集训 Day2 T1

P15721

注意到过程分两部分,一个连通块是从 \(1\) 扩展到 \(i\),另外一个连通块是从 \(n\) 扩展到 \(i+1\),两个连通块中间有一条边。枚举这条边,求的是两部分内以每个点为根的拓扑序个数之和,换根过程中维护即可。复杂度 \(O(n^2)\)

51 广东省队集训 Day2 T2

考虑 \(q=1\) 如何做到线性。

显然我们只关心链上每个点被第一次感染的时刻,现在有一条链,两个人分别位于链的开头和结尾,每次选一个人向中间走一步,要求被感染的点不能走,判断能否相遇。

先考虑朴素做法,枚举相遇的位置,将前缀和后缀分开。考虑移动策略。可以发现贪心策略是,每次考虑前缀和后缀两部分中未来被感染时刻较小的一部分,将那部分移动一步。至此可以做到单次判定 \(O(n^2)\)

注意到过程是走最小值,那么建出小根笛卡尔树可以直接在树上 DP,在 \(O(n)\) 的复杂度内解决判定。至此得到一个 \(O(nq)\) 的做法。

现在考虑链上的第 \(i\) 个位置,其被感染时间为 \(t_i\)。显然要求 \(t_i \geq i\) 或者 \(t_i \geq l-i+1\) 这样的状物。而 \(\sum t_i = O(n)\),所以有值的 \(t_i\) 只有 \(O(\sqrt n)\) 个。如果能全部找出来,就能 \(O(n\sqrt n)\) 解决问题。

对树轻重链剖分,对于每个点维护其轻儿子子树内所有被感染的点,以及对于每条重链维护一个 set 表示所有轻儿子子树内存在感染点的点。修改是容易的,查询直接在 set 上二分出范围内所有点。注意到在 set 上连续访问 \(k\) 个点的时间复杂度是 \(O(k +\log n)\),所以总复杂度 \(O(n\sqrt n + n\log^2 n)\)

52 GDCPC 2024 F

可以证明必然有解。

\(n\) 归纳说明命题成立。当 \(n=2\) 时,命题显然成立。

当命题对 \(n-1\) 成立时,我们说明命题对 \(n\) 也成立。不失一般性地假设 \(m=(k-1)(n-1)+1\)。考虑点 \(i\) 的度数 \(d_i\),则 \(\sum \limits_{i=1}^n d_i = 2m\),故 \(\min \limits_{i=1}^n d_i \leq \dfrac{2m}{n} = \dfrac{2(k-1)(n-1)+1}{n} < 2k-1\)。取出 \(d_i\) 最小的 \(i\),考虑其所有邻边。若存在其某邻居 \(v\) 使得 \((i,v)\) 之间边数至少为 \(k\),那么直接取答案 \(s=i,t=v\) 以及中间的至少 \(k\) 条边即可。否则将 \(i\) 的邻边两两匹配。对于一个匹配 \((i,u),(i,v)\),在 \(u,v\) 之间加入一条边。显然最终无法匹配的边一定全都指向同一个邻居,而其边数严格小于 \(k\)。在图中删去点 \(i\),得到了一个新图,分析新图的边数。

假设 \(d_i=s\),由上文可知 \(s \leq 2k-2\)。其所有邻居 \(S_i\) 中,与其之间边数的最大值为 \(l\)。可知 \(l \leq k-1\),否则命题显然成立。对 \(l\)\(\dfrac{s}{2}\) 的大小关系分类讨论:

  1. \(l \leq \dfrac{s}{2}\)。此时所有邻边可以两两匹配,使得对应邻居不同。至多失去了 \(\dfrac{s}{2} \leq k-1\) 条边。
  2. \(l > \dfrac{s}{2}\)。损失边数为 \(2l-s+s-l = l \leq k-1\)

故新图是一个 \(n-1\) 个点,边数至少为 \((k-1)(n-2)+1\) 的图。根据归纳假设存在解,故命题对 \(n\) 成立。\(\square\)

53 XX Open Cup Grand Prix of Moscow H

引理. 对于任意无向简单图 \(G=(V,E)\) 和正整数 \(k\)。若对于任意 \(S \subseteq V\),设其诱导子图 \(G_S=(V_S,E_S)\),均存在 \(u \in G_S\),使得 \(u\)\(G_S\) 中度数不超过 \(k\)。则存在一个对 \(V\) 的划分 \(C_1,C_2,\cdots,C_p\),使得每个 \(C_i\) 均为 \(G\) 上的独立集,且 \(p \leq k + 1\)

Proof:

\(|V|=n\)

\(n\) 归纳。\(n=1\) 时显然。

命题对点数不超过 \(n-1\) 的图成立时,我们证明命题对点数为 \(n\) 的图也成立。取 \(S=V\) 可知存在 \(u \in V\) 使得 \(deg_u \leq k\)。考虑图 \(G'\)\(G\) 删去 \(u\) 和其相邻边的图。显然 \(G'\) 满足原要求且 \(G'\) 点数为 \(n-1\)。根据归纳假设存在对 \(V'\) 的划分 \(C_1,C_2,\cdots,C_p\) 使得每个 \(C_i\) 均为独立集且 \(p \leq k + 1\)。若 \(p<k+1\),则取 \(C_{p+1}=\{u\}\) 即可。否则存在 \(i \in [k+1]\) 使得 \(C_i\) 内任意一点与 \(u\) 之间没有连边,将 \(u\) 加入 \(C_i\) 即可。\(\square\)

考虑原问题。

归纳构造。\(n=1\) 时显然。

考虑在 \(n-1\) 个点的图上加入第 \(n\) 个点,设前 \(n-1\) 个点的诱导子图 \(G'=(V',E')\) 已知。我们进行的询问集合 \(S\) 必然满足 \(n \in S\)\(S \setminus \{n\}\)\(G'\) 上为独立集。否则交互库只要返回一条属于 \(G'\) 的边我们就无法得到任意信息。根据上述引理可以对 \(n-1\) 个点的图求出大小不超过 \(k+1\) 的独立集划分,依次询问每个独立集和点 \(n\) 的并,若返回边则在独立集中删去这个点并继续询问。总次数不超过 \(m+n(k+1)\leq 2nk+n\)

54 Europe Championship 2026 F

红点构成一个团和若干孤立点。

直接做的话每个点有三个状态,分别是不染红,染红并为孤立点,以及染红且在团上。直接对此不好做。

枚举一个点钦定其属于红色团,那么每个点只有染红或不染两个状态,染成红色可以确定其是否属于团内,转化为 2-SAT 问题。

55 2025 CCPC 全国邀请赛(南昌)F

对于树上构造考虑每次删一个叶子。注意到对于 \(u\) 若存在 \(v\) 使得 \(u,v\) 在任意集合内都同时存在或不存在,则我们认为 \(u\) 为叶子且 \(v\) 为其唯一邻居。显然这样构造不会对解的存在性产生影响。

56 The 3nd Universal Cup Stage 40: Potyczki A

考虑两个区间 \([l_1,r_1)\)\([l_2,r_2)\),若 \([l_1,r_1) \cap [l_2,r_2) = \varnothing\),将两个都判错即可保证至少有一个是对的。\([l_1,r_1) \subseteq [l_2,r_2)\) 时,\([l_1,r_1)\) 判错,\([l_2,r_2)\) 判对即可。

进一步,不断删去无交或包含的区间对,最终得到形如 \([1,n+1),[2,n+2)\cdots\) 的区间,这个时候对错交替即可。

57 CTS 2023 Day1 T1

问题等价于一个 \(n \times n\) 矩阵,每次交换两行上的某两个位置,最终使得每行上的数互不相同,且每个位置最多换一次。

考虑二部图,左侧为 \(1\)\(n\) 表示每一行,右侧为 \(1\)\(n\) 表示每个数。对于每行,向其行内所有数对应右侧点连一条边,得到一个 \(n\) 正则二部图。根据 Hall 定理其存在 \(n\) 组完美匹配,意味着我们可以将每行重排使得每列元素互不相同。

然后交换 \((i,j)\)\((j,i)\) 即可。

58 THUPC 2024 初赛 A

考虑令 \(a_0=0\)\(a_{n+1}=n+1\)。建立有向图 \(G\),其中 \(\forall 0 \leq i \leq n:a_i+1\rightarrow a_{i+1}\),终止状态是 \(n+1\) 个自环。而每次交换只会修改四条边,故显然答案有下界 \(\lceil \dfrac{n+1-\#\mathrm{cyc}}{2}\rceil\)

考虑是否可以构造到下界。我们的构造方法是,每次找到最小的 \(i\),使得存在 \(j < a^{-1}_i\) 满足 \(a_j > i\),令 \(j\)\([1,a^{-1}_i)\)\(a\) 的最大值所在位置。容易发现 \(a^{-1}_{a_j+1} > a^{-1}_i\),且 \(a^{-1}_{i-1}<j\)。交换使得 \(i-1,i\) 以及 \(a_j,a_j+1\) 相邻即可,每次增加两个环。

59 广东省队集训 Day3 T1

先考虑求出环长。

两个棋子 A 和 B,每次 A 走两步 B 走一步,直至某轮相遇。假设为第 \(k\) 轮,进行了 \(2k+k=3k\) 次询问。此时可以确定 A 和 B 在环上,询问 \(q\) 次即可确定环长。这部分的询问次数为 \(3k+q\)

显然有 \(k > p\)。此时 A 在环上所处位置为 \(k-p\),B 在环上所处位置为 \(2k-p\),那么 \(k \equiv 0 \pmod q\)。所以有 \(k \geq q\)。将 A 移回原点并移动 \(k-q\) 步,此时还剩 \(p-(k-q)\) 步移动到环的开头,而 B 还剩 \(q-(k-p)\) 步也移动到环的开头,故每次将 A 和 B 同时向后移动一步并判定是否处于同一位置即可。

分析次数,次数为 \(3k+q+1+k-q+2(p+q-k)=2p+2q+2k+1\leq 4n-1\)

60 广东省队集训 Day3 T2

直接判定是网络流,观察一下性质。

考虑求出 \(a\) 的最大值的最小值 \(w\)。记 \(c_i\) 表示有多少集合包含 \(i\)

不难发现:

  1. \(c_i > w\) 必定有解,只需要将 \(w\) 的方案中包含 \(i\) 全部调整为选 \(i\) 即可。
  2. \(c_i < w\) 必定无解,原因显然。

只需要判定 \(c_i=w\) 的是否可行。

将向汇点连的容量设为 \(w-1\),判定将某条向汇点的边容量改为 \(w\) 后最大流是否增加,在残留网络上做一下即可。可以二分求出 \(w\),复杂度 \(O(m^{1.5}\log n)\)

61 广东省队集训 Day4 T1

直接做是记 \(f_{i,j,k,l}\) 表示两个棋子所述位置的胜负情况。

注意到 \(i,j,k\) 固定时,除非两个格子同行或同列,否则至多存在一个 \(l\) 使得 \(i,j,k,l\) 处先手必败。

对此直接可做到 \(O(n^4)\),过程显然可以 bitset 优化做到 \(O(\dfrac{n^4}{w})\)

62 广东省队集训 Day4 T2

直接做是分块,左右两部分各取 \(B\) 个点,将所有数表示为带数除法,既可做到 \(2 \sqrt n\)

将所有数按照值域从前往后连续四个分一组可以将值域除以四,需要 \(2^3\) 个状态表示每四个依次是什么。卡一下常即可通过。

63 广东省队集训 Day4 T3

即求二部图的 DAG 定向方案数。

直接做 DAG 容斥可以做到 \(O(4^nn^2)\)

注意到过程本质上是将所有点划分为若干独立集,划分 \(x\) 个有 \((-1)^x\) 的容斥系数。枚举左部的划分方案可以做到 \(O(n\mathrm{Bell}(n))\)

64 广东省队集训 Day5 T1

点分治简单题。

65 广东省队集训 Day5 T2

对于独立集 \(C\),可以在 \(2 \lceil \log_2 n \rceil\) 次询问内求出 \(C\) 内所有点的邻居。具体的做法是在 \([n] \setminus C\) 的某个排列上并行二分。

如果能求出一个极大独立集,那么不难在 \(3 \lceil \log_2 n \rceil\) 次询问内解决原问题。

编号随机打乱,维护独立集 \(S\) 和剩余可能加入独立集的点集 \(T\) 初始等于 \([n] \setminus S\)。每次将 \(S\) 放在 \(T\) 前面问一遍,加入新的点,以及将 \(T\)\(S\) 前面问一遍,删掉一些 \(T\) 中不合法的点。

66 European Junior Olympiad in Informatics 2025 Day 2 T1

容易想出一些假做法。

树显然是好做的,直接 DFS,用 \(0\) 表示没有经过的点,\(1\) 表示经过且不在栈中的点,\(2\) 表示在栈中的点,有 \(0\) 就走 \(0\) 没有就按照 \(2\) 回溯。

考虑其为何无法直接套用在仙人掌中,将一个环遍历后,到达环上最后一个点并进行回溯时,环的开头与其真正的父亲标号都是 \(2\),此时无法分辨其真正的父亲。

在这样的位置,考虑直接走向第一个 \(2\),并将这个点颜色改为 \(3\)。如果所到之处是环的开头,也就是假的父亲,那么新的点必然有至少两个 \(2\) 邻居和恰好一个 \(3\) 邻居,这个时候回到 \(3\) 所处点,也就是原来那个点。那个点读取到两个邻居为 \(2\) 且其自身为 \(3\),由于传入邻居顺序不变,直接访问第二个 \(2\) 邻居即可。如果第一个 \(2\) 是真父亲,那么其邻居恰有一个 \(2\) 和一个 \(3\),此时将这个点染成 \(3\) 并回到原来的点,原来的点读取到其自身为 \(3\) 且有一个邻居为 \(3\),就可以走到正确的点并将自身染成正确的颜色了。

67 CF1147E

两次询问可以求出 \(i\)\(i+1\) 的关系。

从而可以求出连续段,现在问题转化为相邻不同。这个很好做,两次询问还可以求第 \(i\) 段和第 \(i+2\) 段的关系,从而钦定第一段为 \(1\) 第二段为 \(2\) 后面一段段加就行。

68 广东省队集训 Day6 T1

显然每个棋子独立,枚举 \(x\) 计算有多少种方式使得最终在 \(x\) 上有棋子。容易做到 \(O(n^2+kn^{0.5})\)

69 数论

设正整数序列 \(\{a_n\}\) 满足 \(a_1=1\),对 \(n\geq 2\)\(a_n\) 是不同于 \(a_1,a_2,\cdots,a_{n-1}\) 的最小的满足 \(\gcd(d(a_n),d(a_{n-1}))=1\) 的正整数。其中 \(d(n)\) 表示 \(n\) 的正约数个数。求证:\(\mathbb{N}_{+}\) 中每个正整数都在 \(\{a_n\}\) 中出现过。

证明:

令集合 \(S=\{2^{p-1}\mid p\in \mathbb{P}\}\)。我们首先说明对于 \(S\) 内的正整数均在 \(\{a_n\}\) 中出现过。

反证。若存在 \(x \in S\) 使得 \(x\) 不在 \(\{a_n\}\) 中出现,则 \(\exists n \in \mathbb{N}_{+}\) 使得 \(\forall i \geq n:a_i > x\)。显然有 \(\forall i \geq n:\gcd(d(a_i),d(x))>1\),而 \(d(x)=p \in \mathbb{P}\),故 \(\gcd(d(a_i),d(x))=p\),则 \(\forall i\geq n: p \mid d(a_i)\),与 \(\gcd(d(a_i),d(a_{i+1}))=1\) 矛盾。

现在考虑原命题。

反证。若存在 \(x \in \mathbb{N}_{+}\) 使得 \(x\) 不在 \(\{a_n\}\) 中出现,则 \(\exists n \in \mathbb{N}_{+}\) 使得 \(\forall i \geq n:a_i > x\),对于任意必定存在 \(j > n\) 使得 \(a_j \in S\)\(d(a_j) > d(x)\),故 \(\gcd(d(x),d(a_j))=1\),从而 \(a_{j+1}\) 可取 \(x\),与 \(a_{j+1}>x\) 矛盾。\(\square\)

70 QOJ141

如果图中所有点度数不超过 \(7\),根据经典结论我们有 \(\chi(G) \leq \Delta(G) + 1\),直接以任意顺序加入所有点并取其颜色为邻居颜色构成集合的 \(\mathrm{MEX}\) 即可。

这启发我们对度数大于等于 \(8\) 的点将颜色传过去,如此一来后手确定了所有度数大于等于 \(8\) 的颜色,再以任意顺序加入剩余的度数不超过 \(7\) 的颜色即可。

传一个 \([0,7]\) 之间的整数需要四个 bit,故这个做法至多需要 \(\dfrac{2m}{8} \times 4 = m\) 个 bit,恰好比限制大一倍,故启发我们能不能对每个点只传两个 bit。

对于每个度数至少为 \(8\) 的点,若其在八染色中颜色为 \(c\),则向后手传 \(c \bmod 4\) 这个信息。而后手还原颜色时,每个 \(x\) 对应原颜色 \(x\)\(x+4\),对每种 \(x\) 跑一个二分图染色就行。至多需要恰好 \(\dfrac{m}{2}\) 个 bit。

71 QOJ1243

根据 \(x^2\) 的凸性,显然一定会存在一个位置,使得所有对应矩形不包含这个位置的都选取了这个位置。枚举这个位置 \((x,y)\),现在只保留所有包含 \((x,y)\) 的矩形。

我们声称此时剩下选的位置一定是整个网格四个顶点中某两个相对的。原因是显然的。只需要证明存在一个位于网格角落,那么剩下那个自然会放到对角。而如果某个不放在角落显然不如放在角落。

维护二维差分即可。复杂度 \(O(XY+n)\)

72 山东省队二轮集训 Day1 T1

题意:

给定正整数 \(n\),称一个长度为 \(n\),且每个元素都在 \([1,n]\cap \mathbb{Z}\) 中的序列 \(a=(a_1,a_2,\dots,a_n)\) 为一个好序列。

对于一个好序列 \(a\),定义函数 \(f(a)\) 如下:

  • 将序列看作一张有 \(n\) 个点的有向图,其中每个点 \(i\) 恰好有一条出边,指向 \(a_i\)
  • \(n\) 个人,编号为 \(1\sim n\)。时刻 \(0\) 时,编号为 \(u\) 的人站在点 \(u\)
  • 对任意时刻 \(t\),若编号为 \(u\) 的人此时站在点 \(x\),则在时刻 \(t+1\) 时他会移动到点 \(a_x\)
  • 记编号为 \(u\) 的人在时刻 \(t\) 所在的位置为 \(idx_{u,t}\)

定义 \(f(a)=\max_{t\ge 0,\ 1\le u\le n}\sum_{i=1}^n [idx_{i,t}=u]\)

其中 \([P]\) 表示当命题 \(P\) 成立时取 \(1\),否则取 \(0\)

现在给定一个好序列 \(b\)。对于每个 \(k=0,1,\dots,n\),求从 \(b\) 出发,至多修改 \(k\) 个元素得到的所有好序列 \(b'\) 中,\(f(b')\) 的最大值。

\(1\le n\le 10^5\)

解:

考虑 \(k=0\),显然是每个连通块内每个点的深度在模环长意义下的众数的出现次数最大值。

\(k>0\) 有两种情况:

  1. \(k\) 个弱连通块,第一个连通块将边改成自环,其他连通块将边连向他,答案为 \(k\) 个弱连通块大小的和。
  2. \(k+1\) 个弱连通块,后 \(k\) 个弱连通块连向第一个弱连通块,答案计算需要进一步分析。

第一类答案对 \(k\) 贡献即为最大的 \(k\) 个连通块大小的和。

第二类答案考虑枚举选的第一个弱连通块是什么,此外的每个连通块会断掉环上某条边,并向第一个弱连通块上连一条边,容易发现贡献就是这个连通块的深度模第一个连通块环长意义下众数出现次数。直接做就是 \(O(n^2)\)

本质不同环长只有 \(O(\sqrt n)\) 个,所以容易做到 \(O(n\sqrt n)\)

73 山东省队集训 Day1 T2

题意:

给定长度为 \(n\) 的整数序列 \(a\),你可以进行任意次(也可以是 \(0\) 次)如下操作:

  • 选择一个区间 \([l,r]\),计算 \(v=\max \limits_{i=l}^r a_i\),然后将区间内所有元素都改成 \(v\),即对所有 \(i\in[l,r]\) 执行 \(a_i \leftarrow v\)

设最终得到的整数序列为 \(b\)。求不同的可能序列 \(b\) 的数量,答案对 \(998244353\) 取模。

\(1\le n\le 5000\)

解:

判定和刻画操作过程都有可能有道理。场上一直在对着笛卡尔树状物做区间 DP,根本做不明白。

先考虑 \(a\) 是排列,如何判定。

首先显然观察是,\(a\) 每个位置对应 \(b\) 中一个可空连续段。具体来说考虑 \([l_1,r_1],[l_2,r_2],\cdots,[l_n,r_n]\),其中 \(l_i\leq r_i\) 或者 \([l_i,r_i] = \varnothing\)。尝试刻画合法的 \(b\) 序列与区间序列的双射关系。

首先非空的 \([l_i,r_i]\) 从左到右依次构成 \([1,n]\) 的划分。

其次有要求 \(b_i \geq a_i\),所以考虑对于 \(i\),找到包含 \(i\) 的小于 \(a_i\) 的极长 \(a\) 中连续段 \([L,R]\),那么有 \([l_i,r_i] \subseteq [L,R]\)

可以说明满足上述两个条件即为充要条件。必要性显然,充分性考虑按值域从小到大操作即可。

对于这个问题不难 \(O(n^2)\) DP 解决。

当原问题不是排列时,考虑固定单射,将一个 \(b\)\([l_1,r_1],[l_2,r_2],\cdots\) 字典序最大的位置计数,问题不难解决。

74 山东省队集训 Day1 T3

题意:

有一个周长为 \(360\) 的圆环,你可以进行任意次切割,每次切割只能是以下两种之一:

  • 沿某条直径切一刀;
  • 沿某条半径切一刀。

经过若干次切割后,圆环会被分成若干段圆弧,设所有圆弧的长度构成一个可重集 \(P\)

现在给定一个大小为 \(n\) 的可重集 \(Q\),其中每个元素都是整数。你需要构造一种切割方案,使得 \(P\) 必须包含 \(Q\) 作为子集。

你的目标是最小化切割次数,并输出一种达到最小切割次数的方案。

\(1 \le n \le 16\)

解:

先考虑 \(\sum \limits_{x \in Q} x = 360\)

全都切半径是简单的,现在考虑至少切了一次直径。

切了一次直径会把圆周切成上下两半,考虑将所有数依次加入集合,每次加入 \(A\)\(B\),可以发现我们希望 \(A,B\) 前缀和相等的次数尽量多。这个 DP 直接就是 \(O(n2^nV)\) 的。

考虑 \(\sum \limits_{x \in Q} x \neq 360\)

我们声称 \(|P\setminus Q| \leq 2\),从而直接套用上述 DP 不难求出答案。

posted @ 2026-03-29 19:41  HappyBobb  阅读(131)  评论(1)    收藏  举报