2026.5 做题记录

1 山东二轮省队集训 Day5 T1

UTPC2023 P

考虑令 \(T=\{A_1,A_2,\cdots,A_m\}\),在从前往后考虑每个 + 的过程中,若其属于 \(T\) 则是好的,否则要求其比目前匹配掉的 \(T\) 中的剩下的最大值要大。

DP,\(f_{i,j,k,0/1}\) 表示前 \(i\) 个位置,匹配了 \(T\) 中前 \(j\) 大的,还有 \(k\) 个不在前 \(j\) 大内待钦定具体值,这里使用延迟钦定手法,\(0/1\) 表示 \(k\) 个里面是否选了第 \(j+1\) 大的那个数,复杂度 \(O(n^3)\)

Submission Link.

2 山东二轮省队集训 Day5 T2

\(s\) 为根就可以假设 \(s,t\) 路径是条到根链,然后警察是一些区间信息啥的应该不难维护。

3 山东二轮省队集训 Day5 T3

这也是题吗?

4 山东二轮省队集训 Day6 T1

简单数据结构。

5 山东二轮省队集训 Day6 T2

\(l=r\) 时,考虑 \(f_{i,j,k}\) 表示以 \(i\) 为根,目前选了的最大为 \(j\),目前到子树内每个叶子路径上都恰好选了 \(k\) 个点的方案数,容易转移。

对于原问题,直接做的话 \(j\) 这一维是 \(O(V)\) 的,无法通过。

我们对于固定的 \(i,k\),对 \(j\) 做前缀和,令 \(g_{i,j,k}= \sum \limits_{x \leq j} f_{i,x,k}\)

观察 \(g_{i,j,k}\) 转移,可以将所有 \([l,r]\) 离散化后分段拉格朗日插值。

6 山东二轮省队集训 Day7 T1

简单题。

7 山东二轮省队集训 Day7 T2

考虑对于限制 \([a,b],[c,d]\)\(\forall i \in [c,d],j\in[a,b]: i \rightarrow j\) 建图。\(x \rightarrow y\) 的边等价于,若 \(s_x=1\)\(s_y=1\)。据此缩点可以得到一个 DAG,问题等价于判定是否存在一个集合 \(S \subseteq V\),使得对于任意 \(u\in S\)\(u\) 在 DAG 上可以到达 \(v\),有 \(v \in S\),且 \(S\) 内所有点的点权和在 \([n,2n]\) 之间。

如果所有点点权不超过 \(n\) 直接按照拓扑序取一个后缀一定存在符合条件的。否则至多两个点权超过 \(n\),这个也是好做的。

8 山东二轮省队集训 Day7 T3

\(S_k\) 为选择的 \(2k\) 个点,存在最优解使得 \(S_k \subseteq S_{k+1}\)

对于 \(S_k\) 确定,注意到答案的形态是要找到重心。然后据此可以引出一个贪心算法,依次加入对于目前重心最优的两个点。对这个结构直接上点分树就行。常数更小的方法可能是倒着删点。

9 山东二轮省队集训 Day8 T1

将给定的序列的 LIS 求出来,设其长度为 \(l\)。分类讨论一下不难做出,大概是讨论一下 \(l=k-1\)\(l=k-2\)\(l \leq k-3\) 之类的。

10 山东二轮省队集训 Day8 T2

注意到 \(3 \times 3\) 矩阵乘法的形式是从 \(1\) 出发的一条欧拉回路,最终 \(1,1\) 的权值是边权乘积。

依次考虑每个矩阵,其会选定一条有向边,将答案乘以权值。进一步所有边集选定后要将答案乘以欧拉回路个数。

根据 BEST 定理可知欧拉回路个数为以 \(1\) 为根内向树个数乘以 \((d_2-1)!(d_3-1)!d_1!\)。而内向树个数等于 \(d_2 \times d_3 - c_{2,3}\times c_{3,2}\)

在 DP 过程中记录 \(2,3\) 号点的出入度,以及内向树是否选定了 \(2,3\) 的出边。钦定不能选 \((2,3),(3,2)\) 的圈只需要再做一次。复杂度 \(O(n^5)\)

11 QOJ1877

考虑猫树分治,对于区间 \([l,r]\) 以及区间中点 \(m=\lfloor \dfrac{l+r}{2} \rfloor\),考虑求出所有 \(L \leq m < R\) 的区间答案。

我们称 \([L,m]\) 内的点为一类点,\((m,R]\) 内的点为二类点。考虑排序后相邻两个点有三类情况,分别是两个一类,两个二类,或者一个一类一个二类。

这个就很好维护了。左侧扫一下右侧扫一下可以解决前两类,第三类也是扫一下维护排序后相邻的贡献即可。复杂度 \(O(n \log^2 n)\)

12 山东省队集训 Day9 T1

如果全都是偶数度数,注意到构造若干环然后可以合并。每次取一个三元环即可,如果最后剩下的无解那说明确实无解。

奇数的情况可以将奇数两两匹配并将整体视作一个偶度数点。

13 山东省队集训 Day9 T2

先二分答案,把每个球半径扩大,问题转化为计算相交的球的个数和 \(k\) 的大小关系。

按半径从大到小做三维空间分块重构状物即可。在之前的 blog 里写过了。

14 P5044

将区间 \([l,r]\) 最大值位置找到,设为 \(p\)。显然应该分 \(x\)\(p\) 的两侧考虑答案。

考虑对此直接设 DP 状态,那么 \(f(l,r)=\min\{f(l,p-1)+(r-p+1)a_p,f(p+1,r)+(p-l+1)a_p\}\)

对于最大值划分子区间的问题,考虑建立大根笛卡尔树。现在考虑询问 \([l,r]\) 答案。在笛卡尔树上考虑 \(l,r\),其 LCA 处即为 \(p\)。而其两个儿子区间分别包含 \([l,p-1]\)\([p+1,r]\)。如果对于笛卡尔树上每个点对应区间 \([l,r]\),以及每个 \(i\in [l,r]\),能求出 \(f(l,i)\),那么原问题解决,前缀和后缀是类似的。

考虑如何解决这个问题。离线,在笛卡尔树上从下往上做,对于区间 \([l,r]\) 和最大值 \(p\),在右儿子里已经得知了 \(f(p+1,i)\)。根据转移我们有 \(f(l,i)=\min\{f(l,p-1)+(i-p+1)a_p,f(p+1,i)+(p-l+1)a_p\}\)。也就是形如 \(f(l,i)=\min\{w+i\times a_p,v+f(p+1,i)\}\)。而 \(f(p+1,i+1)\leq f(p+1,i)+a_p\),所以 \(w+i\times a_p\) 对应的是一段前缀。直接线段树维护即可。复杂度 \(O(n \log n)\)

15 P4898

好题。

直接从前往后加点维护肯定是不好的。考虑一个矩形结构的等价条件。

对于若干个点,将他们视为黑点,将其他点视为白点。他们构成矩形当且仅当下述条件同时满足:

  1. 存在恰好一个黑点,其上面和左边都是白点。矩形中体现为矩形的左上角。
  2. 不存在一个白点,其上下左右至少有两个黑点。

证明显然。

称黑点为好的当且仅当上面和左边都是白的。

称白点为好的当且仅当四周有至少两个黑点。

显然至少存在一个黑好点。故构成矩形当且仅当恰有一个好点。且对于任意形状,好点的个数至少为 \(1\)

每个点成为好点的时刻构成 \(O(1)\) 个与旁边的时间有关的区间。线段树维护区间加全局最小值个数即可。复杂度 \(O(n \log n)\)

16 P13614

先全设为 \(A\) 可以求出 \(S\)\(T\) 的最短路,花费 \(1\) 次询问。

将边集按任意顺序排序,二分一个最大前缀 \(i\) 使得将 \([1,i]\) 的边权改为 \(B\) 后最短路不变。此时 \(S\)\(T\) 最短路必然经过边 \((u_{i+1},v_{i+1})\)。花费 \(\lceil \log_2 m \rceil\) 次询问。

\(u_{i+1}\)\(v_{i+1}\) 同时开始跑 BFS,将所有点按照距离 \(u_{i+1}\)\(v_{i+1}\) 的最短路大小关系分为两个集合 \(P,Q\)。显然有 \(S \in P\)\(T \in Q\)。对于 \(P,Q\) 分别求出一个 BFS 树,在 BFS 序上倒着二分即可。次数不超过 \(\max \limits_{x} \{1+\lceil \log_2 m\rceil+\lceil \log_2 x \rceil + \lceil \log_2 (n-x) \rceil\}\)\(x=\dfrac{n}{2}\) 时取到最大值不超过 \(50\)

17 QOJ1963

将三杯水的重量设为 \(A,B,C\),不妨假设 \(A \leq B \leq C\)。我们说明可以在 \(\lceil \log_2 V \rceil\) 次操作内得到新状态 \(A',B',C'\) 满足 \(A' \leq B' \leq C'\)\(A' \leq \dfrac{A}{2}\)

首先考虑 \(A\mid B\),不妨假设 \(A=1\)。依次考虑 \(B\) 的每个二进制位从 \(0\) 开始,操作前 \(A=2^i\),如果 \(B\) 这一位是 \(1\),则从 \(B\) 倒向 \(A\),否则从 \(C\) 倒向 \(A\)。由于 \(C \geq B\) 所以一定可以进行操作,整个操作结束后 \(B=0\)

\(A \nmid B\) 时,考虑带余除法 \(B = Aq+r\),直接令 \(B'=Aq\) 完成上述操作过程,则剩下的 \(B=r\)。如果 \(r \leq \dfrac{A}{2}\) 则我们完成了目标。否则 \(r > \dfrac{A}{2}\),令 \(B'=A(q+1)\) 完成上述操作,在最后一次操作时无法进行。此时 \(A'=2^iA\),而 \(B'=2^iA-A+r\)。这时从 \(A\) 倒向 \(B\) 得到 \(A-B=A-r\leq \dfrac{A}{2}\)

从而原问题可以不断将最小值减半,操作次数不超过 \(\lceil \log_2^2 V \rceil\)

18 QOJ2115

对于一个序列,判定方法是记 \(f_i\) 表示前 \(i\) 个是否可以。有 \(f_i = \bigvee \limits_{1 \leq j \leq i, a_j = a_i} f_{j-1}\)

对此直接 DP 会算重,考虑从前往后的过程中,记 \(g_{i,j,0/1}\) 表示考虑完了 \([1,i]\),所有满足 \(f_x=1\)\(a_{x+1}\) 构成的集合大小为 \(j\)\(f_i\) 的取值。这样下一次只需考虑其选的是否在 \(j\) 个里面即可转移。复杂度 \(O(n^2)\)

19 QOJ2376

游戏结果等价于将所有有祖先关系的点连边,判定图是否有完美匹配。

20 QOJ2486

考虑一个个连续段做,每个连续段如果之后还有同色连续段就在末尾加一个对应字符之后移过去。可以说明操作次数不超过 \(3n\)

21 QOJ2544

我们不会花 \(1\) 去买东西。花 \(x\) 元买东西会获得 \((5-(x \bmod 5)) \bmod 5\)\(1\)。对此可以做背包。

22 P16434

\(1\)\(W+200\) 全放进去三分。注意到对于区间 \([l,r]\),一定有两个三等分点的和大于等于 \(r\),然后这个询问可以手玩出一个询问分三部分的。

23 P5781

很简单,大概就是说所有矩形的可能上下边界只有 \(O(nm)\) 个,每个位置横着竖着做一个单调栈就行。

24 P6751

我们先实现二进制加减法器,只需要用 \(9\) 个二进制位存一个整型然后做竖式即可。

然后例如要求行上的曼哈顿距离,求出每行的 \(\mathrm{OR}\),那么就是求第一个 \(1\) 和最后一个 \(1\) 之间的距离。前缀 \(\mathrm{OR}\) 一下从前往后扫就能求出来第一个 \(1\) 的位置。最后一个同理。然后二进制减法就可以求出曼哈顿距离。最后判定就是判断 \(a+b-k=0\) 是否成立。

25 P6829

按照极值考虑。每次选出一个局部最大的,换句话来说其后面没有比他大的,且前面也不存在一个这样的。这样的位置显然存在,直接将其取为目前最大值向区间内所有点连边。复杂度 \(O(n^2)\)

这个过程数据结构可以优化快速维护,而点的可达性只需要注意到我们每次都希望向区间内较大的点走,倍增维护即可。复杂度 \(O((n+q)\log n)\)

26 2024 中欧数学奥林匹克 3

有一个长度为 \(n\) 的整数序列,满足每种颜色构成一个连续段。你每次询问一个点所在连续段大小。求最坏情况下最少询问多少次可以求出每个连续段。

解:

答案为 \(n-1\)。显然 \(n-1\) 可行:询问 \(1,2,\cdots,n-1\)

接下来说明 \(n-2\) 不可行。

\(x_i\) 表示对于 \(i\) 位置交互库回答的值。我们说明存在交互库的策略,使得在前 \(n-2\) 次每次询问之后,设最靠前的未询问位置为 \(a\),最靠后未询问位置为 \(b\),则有 \(\sum \limits_{i=1}^{a-1} \dfrac{1}{x_i}\)\(\sum \limits_{i=b+1}^n \dfrac{1}{x_i}\) 均为整数,且对于任意询问过的 \(i\),有 \(x_i \in \{1,2\}\)。最终进行 \(n-2\) 次操作后,只需分类讨论 \(b-a\) 的奇偶性并容易推出两种结果。

现在进行一次询问 \(k\)。若 \(a < k < b\) 则直接令 \(x_k=2\)。否则不妨设 \(x=a\),找到 \(a+1\) 开始的后缀的最长全选前缀,并根据前缀的奇偶性决定 \(x_a\)。显然这个是对的。

27 QOJ2836

直接从前往后不好做。考虑按照选的最大值切开两半。

对于目前区间 \([l,r]\),选了的 \(a_p\) 的最大值位置为 \(p \in [l,r]\),则我们发现限制等价于 \([l,p)\) 选的最大值小于 \((p,r]\) 选的最小值。对此直接区间 DP。\(f_{l,r,L,R}\)\(g_{l,r,L,R}\) 分别表示区间 \([l,r]\),只能选值在 \([L,R]\) 之间的数,以及必须选 \(R\) 的方案数。显然跑不满。

28 QOJ3002

对于每行每列,如果至少有两个 \(1\) 则这一行或列一定不能进行操作。接下来如果一个点初始和结束都是 \(1\),那么如果这行不能操作,这列也不能,反之亦然。然后猜一些结论就对了。

29 QOJ4212

一开始全选右括号,从前往后考虑每个匹配。如果修改后依然有每个后缀和小于等于 \(0\) 则直接修改为两个左括号。正确性不难通过调整说明。

30 QOJ4220

每种颜色有三个可能的圆弧。枚举颜色 \(1\) 选了哪个圆弧,发现其余每种颜色只有至多两种可能圆弧,断环为链 DP 即可,复杂度 \(O(n)\)

31 QOJ4244

首先操作可逆。如果能得知 \(a \rightarrow b\) 的操作序列 \(p\)\(b \rightarrow a\) 的操作序列即为 \(\mathrm{rev}(p)\)。如果能找到一个中间态 \(x\),使得 \(s \rightarrow x\)\(t \rightarrow x\) 都存在,那么原问题解决。

\(n\) 是偶数时,注意到每次操作都是修改一奇一偶。将偶数位置取反变成交换两个相邻位置。分别做一次冒泡排序即可。

\(n\) 是奇数时。我们声称有解当且仅当两边的 \(1\) 的个数奇偶性相同。我们每次取出这个串在圈上最长的长度为偶数的连续段将其全部取反,此时连续段个数减小 \(1\),最终会得到一个所有位置颜色相同的圈,而这个圈的颜色即取决于原本的 \(1\) 的个数奇偶性。

32 QOJ4561

容易发现每列上可能的高度只有 \(0,n\),以及所有存在鱼的点的下面那个。状态个数是线性的,DP 一下,里面可能要数据结构优化一下。

33 QOJ4810

\(s=a_1\oplus a_2\oplus \cdots \oplus a_n\),等价于我们要找一个非空集合 \(S \subseteq [n]\),令 \(w=\bigoplus \limits_{x \in S} a_x\),最大化 \((w+1)\oplus s \oplus w\)

注意到 \(w \oplus (w+1)\) 只和 \(w\) 末尾连续的 \(1\) 的个数有关,并且只有 \(O(\log n)\) 个可能的值,均形如 \(2^{k}-1\),枚举 \(k\),问题变为是否存在非空集合 \(S\) 使得 \(w\) 的末尾 \(k-1\) 位均为 \(1\) 且第 \(k\) 位为 \(0\)

直接忽略高位建线性基,复杂度为 \(O(n \log^2 V)\)。但显然可以从高往低位做,每次将线性基中最大的那个数删掉并将其最高位删去后重新插入线性基。复杂度 \(O(n\log V+\log^2 V)\)

34 CF2096F

只需要对于每个 \(l\) 求最大的 \(r\) 使得 \([l,r]\) 区间内的限制均可以满足。

一类限制相当于若干次的区间覆盖 \(0\)。先将一类区间覆盖了,那么没被覆盖的位置都填 \(1\),二类限制相当于是所有二类区间都没有被完全覆盖。

双指针时我们要支持加入和删除一类二类区间。先考虑加入时怎么判定合法性。加入二类区间是简单的,只需要一棵线段树维护每个点被一类区间覆盖的次数即可。加入一类区间时,不能直接做颜色段均摊,这是因为删除操作的存在。正确的做法是向左向右找到极长连续段之后直接判断是否存在子区间为二类区间。需要线段树二分状物。总而言之可以做到 \(O(n\log n+q)\)

35 ARC220A

这也是题吗?

注意到 \(\dfrac{1}{x^2}=4 \times \dfrac{1}{(2x)^2}\)。所以若 \(n\) 可以,则 \(n+3\) 也可以。

注意到模 \(3\) 的三个同余类的有解最小值分别是 \(1,6,8\) 即可。

36 ARC220B

考虑最终的 \(a'_i = a_{p_i}\)。可以发现 \(p\) 可行的充要条件是 \(i \rightarrow p_i\) 连边后恰有一个置换环。要求 \(a_{p_i}=b_i\) 的个数最大是多少。

\(a_i \rightarrow b_i\) 连边。问题变为一个欧拉回路状物。

37 CF2228E2

先考虑 E1。即 \(q=1\),只有询问。

直接将式子拆成 \(\sum \limits_{i,j} a_ia_j(n-\max(i,j)+1)\)。考虑三种贡献,分别是 \(a_i,a_j\) 中有 \(0,1,2\)\(-1\)

先考虑 \(i\neq j\)

均没有 \(-1\) 是容易计算的。

\(1\)\(-1\) 时,我们相当于要计算 \(\sum \limits_{i=1}^k a_i=m\)\(a_i\geq 0\),所有情况下 \(a_1\) 的和是多少。显然所有数对称,只需要计算方案数乘以 \(m\) 除以 \(n\)

\(2\)\(-1\) 时要计算 \(\sum \limits_{i=1}^k a_i=m\)\(a_i \geq 0\) 的情况下,\(\sum a_1a_2\) 为多少。

考虑生成函数 \(F(x)=\left(\sum \limits_{i \geq 0} ix^i\right)^2\left(\sum \limits_{i\geq 0}x^i\right)^{k-2}\),答案即为 \([x^m]F(x)\)

\(S_0(x)=\sum \limits_{i \geq 0} x^i=\dfrac{1}{1-x}\)

\(S_1(x)=\sum \limits_{i \geq 0} ix^i\) 的封闭形式考虑 \(S_0(x)\) 的导数 \(\dfrac{d}{dx}S_0(x)=\dfrac{d}{dx}\dfrac{1}{1-x}=\dfrac{1}{(1-x)^2}\),而另一方面 \(\dfrac{d}{dx}S_0(x)=\sum \limits_{i \geq 0}ix^{i-1}=\dfrac{1}{x}\sum \limits_{i\geq 0}ix^i=\dfrac{1}{x}S_1(x)\),故 \(S_1(x)=\dfrac{x}{(1-x)^2}\)

\(F(x)=\dfrac{x^2}{(1-x)^4}\times \dfrac{1}{(1-x)^{k-2}}=\dfrac{x^2}{(1-x)^{k+2}}\)

根据广义二项式定理我们有 \((1-x)^{-a}=\sum \limits_{i \geq 0} (-1)^ix^i\dbinom{-a}{i}=\sum \limits_{i \geq 0} (-1)^{2i}x^i\dbinom{a+i-1}{i}=\sum \limits_{i \geq 0} \dbinom{a+i-1}{i}x^i\)

所以 \(F(x)=x^2(1-x)^{-(k+2)}=x^2\sum \limits_{i \geq 0} \dbinom{k+i+1}{i}x^i = \sum \limits_{i\geq 0} \dbinom{k+i+1}{i}x^{i+2}\)。所以 \([x^m]F(x)=\dbinom{k+m-1}{m-2}\)

此外 \(i=j\) 时可能要计算 \(\sum a_1^2\),即 \([x^m]\left(\sum \limits_{i \geq 0}i^2x^i\right)\left(\sum \limits_{i \geq 0}x^i\right)^{k-1}\),前面这个式子可以通过 \(\sum \limits_{i \geq 0}ix^i\) 求导而来,方法类似。

至此对于 E1 可以做到 \(O(n)\)。所有式子都可以拆开,E2 上个线段树就行。

38 QOJ7793

合并过程看作二叉树。由于磨损值初始都是 \(0\),所以磨损值对代价的贡献只和二叉树形态有关,和具体叶子顺序无关。而重量贡献只和叶子的深度集合有关,和具体形态无关。当树确定时,设叶子深度依次为 \(d_1 \geq d_2 \geq \cdots \geq d_n\),以及初始重量为 \(w_1 \leq w_2 \leq \cdots \leq w_n\)。则重量贡献即为 \(\sum w_id_i\)。而磨损值的形式是儿子取 \(\max\) 的两倍加 \(1\),考虑对二叉树长链剖分,则贡献是每个不包含根的长链的 \(2\) 的长度次方减 \(1\) 之和。长链的个数为 \(n-1\),故只需要考虑 \(2\) 的长度次方。

由于重量贡献和深度有关,考虑对于确定的 \(d_1,d_2,\cdots,d_n\),如何分配二叉树形态可以使得磨损值对应的贡献最小。从底层向上扫,对于目前深度 \(x\),要把这层的点两两匹配。显然贪心的应该是将这些点按照子树深度大到小排序从前往后两两匹配最优。

我们将每个点的长儿子的边标上 \(0\),短儿子的边标上 \(1\),每个点的权值为从根到这个点上所有边对应二进制数,在每个长链底端计算贡献,设这个叶子对应点权 \(x\),则贡献即为 \(\mathrm{lowbit}(x)\)。为了去除包含根的链,这里设 \(\mathrm{lowbit}(0)=0\)。那么对于目前的一层,本来有 \(x\) 个叶子,下面传上来 \(y\) 个,贡献就是 \(\sum \limits_{i=y}^{y+x-1} \mathrm{lowbit}(i)\)

现在直接从下往上 DP 就行。具体地记 \(f_{i,j}\) 表示到了某一层还有 \(i\) 个叶子没有确定,下面传上来了 \(j\) 个叶子。转移考虑换一层或者将第 \(i\) 个叶子作为这一层内的一个点。时间复杂度 \(O(n^2)\),滚动数组既可做到 \(O(n)\) 空间。

39 QOJ9561

首先题目有额外限制是 \(a_i \leq v\),题面上没有写。

\(S=[n]\) 可知 \(v \geq n\) 无解。现在只考虑 \(v < n\)

观察可知 \(0,1\) 恰好出现一次,之后对于 \(i\) 考虑点权 \(\leq i\) 的虚树,发现 \(i+1\) 要么只出现一次挂在整个结构外,要么出现次数任意但是都在 \(i\) 的虚树内。对此 DP。\(f_{i,j,k}\) 表示考虑了 \([0,i]\) 值域,现在虚树大小为 \(j\),里面有 \(k\) 个点没有选。直接做就是 \(O(n^4)\) 的。

DP 出来乘以 \(n!\) 就是答案。

40 QOJ7771

注意到第 \(i\) 次操作前,\(a'_i\) 等于 \(a\)\([1,i]\) 的最小值。

故相当于计算有多少 \(i\) 使得 \([1,i]\) 最小值等于大到小排序后第 \(i\) 大的数。

离线按 \(l\) 倒序扫描线,单调栈维护每个前缀 \(\min\) 的段,这一段的贡献只需要往后找若干比他大的数,倍增一下即可。复杂度 \(O((n+q)\log n)\)

41 QOJ2128

有点意思的题。

首先一些显然有解或无解的情况判掉,例如若 \(a_i=b_i\) 则必定有解,然后 \(a\) 全相同无解,然后若对于任意边 \((u,v)\) 均有 \(b_u \neq b_v\) 则无解,考虑最后一次操作即矛盾。

在此基础上,我们声称若树不是链,则必定有解。考虑点 \(u\) 和其三个邻居 \(a,b,c\),先调整至 \(a,b,c\) 颜色不全相同,然后其余点按照深度大到小操作最后只剩 \(u,a,b,c\) 四个点,显然可行。

链的情况考虑取出连续段,显然操作不会增加连续段个数,如果 \(a\) 的连续段开头和 \(b\) 不同还要减少一个连续段,然后若 \(a\) 连续段数大于等于 \(b\) 的则可行否则不可行,证明显然。

42 QOJ5013

\(m\geq 2\) 时,总是可以看作取出 \(m+1\) 段,每段全选 \(0\)\(1\),最大化选的个数和。

注意到相邻段选的颜色必定不同,一个连续段必然被整体选入一个区间,在此基础上考虑合并连续段。现在 \(0,1\) 交替,删去中间会合并两侧,删去两侧就是直接删,反悔贪心即可。

43 P7195

看起来可以螺旋状从外向里走,唯一的问题在于如果有边角的不能直接衔接,但是这种点你可以最后再扔进去一条左下右上和一条左上右下的结构里,问题解决。

44 QOJ4926

考虑在将所有点按照度数排序构成的序列上二分,或者准确来说我们只要求叶子排在前面其余点在后面。找到一个最小的长度不为 \(1\) 的前缀使得返回值为 YES,然后大概率这个前缀最后一个位置就是答案,除非前缀长度为 \(2\)。这个时候看起来还要多一次询问,这样就是 \(10\) 次,虽然交一下发现直接过了,但实际上考虑把所有点一起二分,询问长度为 \(1\) 的前缀时不询问 \(\{a_1\}\) 而是询问 \(\{a_1,a_3\}\)

45 QOJ5042

随便贪心就行了。

46 QOJ5256

分类讨论一下结构好像 SA 就能做一下。

47 QOJ5699

很容易仿照题面证明出任意图的最长单调路径长度至少为 \(\dfrac{2m}{n}\),所以答案下界是 \(n-1\)

构造仿照证明过程,显然只需要将 \(K_n\) 拆成 \(n-1\) 个不交完美匹配。考虑 \(V=\{\infty,0,1,\cdots,2k-2\}\),对于 \(0 \leq t \leq 2k-2\)\(E_t = \{(\infty, t)\} \cup \{(t-i,t+i)\mid 1 \leq i \leq k-1\}\),其中点按 \(\bmod (2k-1)\) 理解,不难证明这 \(2k-1=n-1\)\(E_t\) 就是 \(n-1\) 组不交完美匹配。问题解决。

48 QOJ6501

考虑 \([2,n]\) 每个点向前匹配一个点,\([1,n-1]\) 每个点向后匹配一个点。总共 \(2n-2\) 个点和 \(2n-2\) 条边,每条边 \(x \leq y\) 连接 \((x,0)\)\((y,1)\) 表示可以被左侧选或右侧选。总共 \(2n-2\) 条边,意味着每个连通块是基环树时有解,方案数为 \(2^c\)\(c\) 为基环树个数,每个基环树的环可以有两种方向。

49 QOJ6844

先考虑求出长度。求出后缀数组之后随便做一下就好了,这个题比较简单。

50 QOJ6845

求出最短路后只考虑 \(d_v=d_u+1\) 的有向边。合法路径数最多大概是 \(O(x^{\frac{n}{x}})\) 这么多,也就是每组 \(x\) 个,总共 \(\dfrac{n}{x}\) 组。经典结论是在 \(x\) 取整数时 \(x=3\) 最大,复杂度 \(O(3^{\frac{n}{3}})\)

推导方式是考虑 \(f(x)=\ln \left(x^{\frac{n}{x}}\right) = \dfrac{n}{x}\ln x\)。要求 \(f(x)\) 的最大值。考虑 \(f'(x) = n\left(\dfrac{\ln x}{x}\right)'=\dfrac{n(1-\ln x)}{x^2}\),在 \(x=e\) 时有 \(f'(x)=0\),且 \(x<e\)\(f(x)>0\),故 \(f(x)\) 最大点在 \(x=e\) 取到,离散情况 \(x=3\) 有最大值。

51 QOJ7523

假设 \(b_1 \leq b_2 \leq \cdots \leq b_n\),花费就是 \(b_{x_k}+\sum \limits_{i=1}^k a_{x_k}\)

对于固定的 \(x_k,k\),不难求出最小花费。

不难注意到关于 \(k\)\(x_k\) 的最优决策点随着 \(k\) 单调不降,整体二分即可。复杂度 \(O(n \log^2 n)\)

52 MO TST 2022 P7

\(n \times m\) 的网格上,初始共 \((n+1)m\) 条横线和 \(n(m+1)\) 条竖线,对于 \(n\times m\) 个格子中的每一个格子,可以加上至多一条对角线。求所有的正整数对 \((n,m)\) 使得存在加若干对角线的方式使得图可以一笔画。

解:

当且仅当 \(m=n\) 时可行。

首先说明 \(n=m\) 时的充分性。由于原图连通,可以一笔画等价于每个点度数为偶数。显然原图只有边界上且不在四角上的点初始度数为奇数。用若干右上-左下的路径覆盖即可。

接下来说明必要性。新增边集是一组关于边界上的奇度点的匹配,且两个点之间可以匹配的必要条件是曼哈顿距离为偶数,也就是黑白染色后同色。匹配两个点对应一条两点间的路径,类似于一个割将两部分分开。将所有点黑白染色后,将所有边界上奇度点分为在上下边界和在左右边界。注意到所有匹配一定都是上下和左右之间的,而不在内部,否则不难说明其割开的两部分有一部分有奇数个点。故要求 \(n=m\)

53 QOJ7774

先考虑 \(k=1\)。要求所有长度为 \(n\) 的满足 \(a_i \in [1,m]\)\(a_i\) 两两不同的序列的 \(\dfrac{1}{\prod \limits_{i=1}^n \left(\sum \limits_{j=1}^i a_j\right)}\) 的值。

对于序列 \(a_1,a_2,\cdots,a_n\),考虑组合意义,有 \(a_1+a_2+\cdots+a_n\) 个球,第 \(i\) 组有 \(a_i\) 个且每组内部互不区分,组之间区分。考虑将这些球随意排成一列,记 \(x_i\) 表示第 \(i\) 组的所有球中最靠后的出现位置,我们要求 \(x_1 < x_2 < x_3 < \cdots < x_n\),方案数的占比为 \(\prod \limits_{i=1}^n \dfrac{a_i}{s_i}\),这是直接将概率相乘的结果。另一方面我们知道,每一种对球的排序方式对应唯一一种 \(a\) 的排列。所以 \(a\) 的所有排列的 \(\prod \limits_{i=1}^n \dfrac{a_i}{s_i}\) 之和为 \(1\),所以 \(\prod \limits_{i=1}^n \dfrac{1}{s_i}\) 之和就是 \(\dfrac{1}{\prod \limits_{i=1}^n a_i}\)。所以只需要求所有大小为 \(n\) 的集合的 \(\prod \dfrac{1}{a_i}\) 的和,直接背包即可。

对于 \(k=2\),考虑先枚举 \(a_1\)。当确定 \(\{a_2,a_3,\cdots,a_n\}=S\) 后,\(a_2,a_3,\cdots,a_n\) 的所有排列的对应上述权值和不等于 \(1\),而是等于满足 \(r_1 < \min \limits_{i=2}^n r_i\) 的排序方案占比。也就是方案数除以 \(\dfrac{(\sum \limits_{i=1}^n a_i)!}{\prod \limits_{i=1}^n a_i!}\)。考虑确定 \(S\) 如何计算 \(r_1 < \min \limits_{i=2}^n r_i\) 的球的顺序方案数。容斥,枚举 \(T \subseteq \{2,3,\cdots,n\}\),钦定 \(\forall i \in T:r_i < r_1\),此时方案数分步计算,首先是 \(T\) 内的数多重集排列,然后是将 \(T\) 中的插板进 \(a_1\)\(1\) 内,最后是将 \(T\)\(a_1\) 看作整体,和 \(S \setminus T\) 做多重集排列,除以总方案数化简得到的是 \((-1)^{|T|}\dfrac{a_1}{a_1+\sum \limits_{x \in T} a_x}\)

然后很简单,不枚举 \(a_1\),而是 DP 过程中考虑加入 \(a_1\)。按值域 DP,状态里记目前的 \(\sum \limits_{x \in T} a_x+a_1\),目前的 \(|S|\),以及 \(a_1\) 是否已经选过。复杂度 \(O(n^4)\)

54 QOJ63

对于确定树形态的交互,常见方法是确定根后求出一个拓扑序,然后逐步确定父亲,或者依次加点维护前缀构成的虚树。

显然我们不方便求出拓扑序,考虑使用第二个方法。对于前 \(i-1\) 个点构成的虚树,尝试加入点 \(i\)。暴力的做法是从根开始往下插入,对于目前点 \(u\) 和儿子子树 \(v\),询问 \(u,v,i\) 即可判定 \(i\) 是否在 \(v\) 子树内。这样的话询问次数是和 \(i\) 深度有关,无法通过。

但是考虑一次消去 \(u\) 的两个儿子,考虑 \(u\) 两个儿子 \(x,y\),询问 \(x,y,i\)。如果返回值为 \(x,y,i\) 中之一,则至多再进行一次询问,否则一次性消去两个。可以通过。

55 P2000

写出 OGF:

\(f_1(x)=\sum \limits_{n \geq 0}x^{6n}=\dfrac{1}{1-x^6}\)

\(f_2(x)=\sum \limits_{0 \leq n \leq 9} x^n = \dfrac{1-x^{10}}{1-x}\)

\(f_3(x)=\sum \limits_{0 \leq n \leq 5} x^n=\dfrac{1-x^6}{1-x}\)

\(f_4(x)=\sum \limits_{n \geq 0}x^{4n} = \dfrac{1}{1-x^4}\)

\(f_5(x)=\sum \limits_{0\leq n \leq 7} x^n = \dfrac{1-x^8}{1-x}\)

\(f_6(x)=\sum \limits_{n \geq 0} x^{2n} = \dfrac{1}{1-x^2}\)

\(f_7(x)=1+x\)

\(f_8(x)=\sum \limits_{n \geq 0}x^{8n} = \dfrac{1}{1-x^8}\)

\(f_9(x)=\sum \limits_{n \geq 0} x^{10n}=\dfrac{1}{1-x^{10}}\)

\(f_{10}(x)=1+x+x^2+x^3=\dfrac{1-x^4}{1-x}\)

即求 \([x^n]\prod \limits_{i=1}^n f_i(x)\)

经计算可知 \(\prod \limits_{i=1}^n f_i(x) = \dfrac{1}{(1-x)^5} = \sum \limits_{n \geq 0} \dbinom{n+4}{n} x^n\)

故答案为 \(\dbinom{n+4}{n}=\dfrac{(n+1)(n+2)(n+3)(n+4)}{24}\)。高精度计算即可,需要用 NTT。

56 P2012

序列计数是有标号的,考虑 EGF。

三个类型的 EGF 分别是:

\(f_1(x) = \sum \limits_{n \geq 0} \dfrac{x^n}{n!}=e^x\)

\(f_2(x)= \sum \limits_{n \geq 0} \dfrac{x^{2n+1}}{(2n+1)!}=\dfrac{e^x-e^{-x}}{2}\)

\(f_3(x)=\sum \limits_{n \geq 0}\dfrac{x^{2n}}{(2n)!}=\dfrac{e^x+e^{-x}}{2}\)

即求 \(n![x^n]\left(f_1(x)f_2(x)f_3(x)\right)^4\)

带入计算可得答案。

57 广东 MO 初赛加试组合

题意:

求边数最大的简单有向图 \(G\),满足其有 \(100\) 个点,两个点之间最多存在一条边,且不存在四个点满足两两之间有边且四个点内不存在三元环。

解:

首先说明无法给无向完全图 \(K_8\) 的边定向,使得上述条件满足。事实上我们只需证明更强的命题:对于 \(n\) 个点的无向完全图定向,其最大传递子图点数至少为 \(\lfloor \log_2 n\rfloor+1\)。对 \(n\) 归纳,考虑 \(1\) 的所有邻居,至少有 \(\lceil \dfrac{n-1}{2} \rceil\) 个点与其的连边方向均相同。故 \(f(n) \geq f(\lceil \dfrac{n-1}{2} \rceil)+1\)\(f(1)=1\),所以 \(f(n) \geq \lfloor \log_2 n\rfloor+1\),带入 \(n=8\)\(f(8) \geq 4\)

故答案有已知上界 \(T(100,7)=4285\)。我们接下来说明上界可以取到。

不难观察出存在 \(K_7\) 的边定向方案使得最大传递子图大小不超过 \(3\),具体构造太长了懒得写。

根据图兰定理的证明我们知道构造不含 \(K_8\) 子图的边数最多的图的方法是构造一个 \(7\) 部图,两个属于不同部分的点连边。套用上述 \(K_7\) 构造即可。

故答案为 \(4285\)

58 QOJ1813

很有难度的。

考虑四个位置 \(1,2,3,4\),每三个进行一次询问 \(1\),共 \(\dbinom{4}{3}=4\) 次询问 \(1\)。假设真实情况是 \(p_a < p_b < p_c < p_d\),发现询问返回值的较小的那两个三元集的交就是 \(\{a,b\}\),较大的则是 \(\{c,d\}\)。我们考虑维护四元组 \(a,b,c,d\) 以及两个数 \(L,R\),表示 \(p_a,p_b < p_c,p_d\),且 \(\max\{p_a,p_b\}=L\)\(\min\{p_c,p_d\} = R\)。初始通过上述询问可得 \(a,b,c,d\)

依次加入所有 \(i \in [5,n]\),进行一类询问 \(a,c,i\),返回值为 \(v\)。若 \(v\in (L,R)\),则可以唯一确定 \(p_i=v\),保持 \(a,b,c,d\) 不变。否则不妨设 \(v\geq R\)\(v \leq L\) 同理。可以发现此时若 \(v=R\),则 \(p_c=R\),否则 \(p_d=R\),删去等于 \(R\) 的后将 \(i\) 加入新的四元组并至多再进行一次询问即可。

一类询问次数不超过 \(4+2(n-4)=2n-4\)。最后还要两次询问 \(2\) 判定 \(p_a,p_b\)\(p_c,p_d\) 分别的大小关系。

59 QOJ2359

注意到依靠斜线封锁一个点出发的八连通至少需要黑白染色后每种颜色格子至少两个。故存在黑或白棋子个数不超过 \(1\) 一定不行。

否则直接贴着国王走封闭两层就行。

60 QOJ2438

我们先考虑求出 \(f_{i,j}\) 表示 \(i\) 个点的图,通过小于等于 \(j\) 的边恰连通的概率。转移的想法是考虑 \(=j\) 的边和 \(<j\) 的边,\(<j\) 的边构成若干连通块后,\(=j\) 的边要将这些连通块合并为一个整体。从 \(1\) 所在连通块出发,每次选取目前连通块 \(S\) 的所有 \(=j\) 的边构成的邻居,按大小从小到大做,即可为每种方案钦定一个顺序。

然后对于最小生成树,考虑将 \(f_{i,j}\) 扩展为生成函数,每次加入一条 \(j\) 的边将其乘以 \(x^j\)。如果维护多项式复杂度太大可以考虑带入足够多项后插值。

61 QOJ2626

二分,求出 \(0\) 的个数最小值和最大值。

62 QOJ3047

对第二棵树建点分树,在第一棵树上点分治即可。

63 QOJ4000

假设 \(n,m,q\) 同阶。

显然这个问题不弱于有向图可达性,考虑追忆状物。

\(B\) 为块长时间轴分块。对于 \(\dfrac{n}{B}\) 个前缀,考虑后面的 \(B\) 次操作涉及的 \(O(B)\) 个点拉出来。对于原图处理出每个点能到 \(O(B)\) 个关键点的哪些以及能被哪些关键点到达。这部分的复杂度是 \(O(\dfrac{nB}{w})\) 的。然后对这 \(O(B)\) 个关键点建图,根据上述结果处理两两之间可达性。在处理后 \(O(B)\) 个询问时,每次加入或删除对应操作的边,询问跑 BFS。稠密图 BFS 可以做到 \(O(\dfrac{B^2}{w})\)。分析复杂度是 \(O(\dfrac{n^2}{B}+\dfrac{n^2B}{Bw}+\dfrac{nB^2}{w})\)。取 \(B=\sqrt[3]{nw}\) 得最优复杂度 \(O(\dfrac{n^2}{w}+\dfrac{n^{\frac{5}{3}}}{w^{\frac{1}{3}}})\)

64 QOJ4007

对于第一棵树,限制集合 \(S_1\) 都是叶子,对于第二棵树,限制集合 \(S_2\) 都是叶子。则方案数为 \(\prod \limits_{i=2}^n (i-1-\sum \limits_{j=1}^{i-1} [j \in S_1]) \prod \limits_{i=1}^{n-1} (n-i-\sum \limits_{j=2}^{n} [j \in S_2])\)

设第一棵树叶子集合为 \(A_1\),第二棵树叶子集合为 \(A_2\),则计数满足 \(A_1 \cup A_2 = [n]\)\(A_1 \cap A_2 = \varnothing\) 的方案数。

\(A_1 \cup A_2 = [n]\) 可以在 DP 过程中限制,主要考虑不交限制。设 \(A_1 \cap A_2 = S\),要求 \(S = \varnothing\),启发我们对 \(S\) 容斥,钦定 \(T \subseteq S\) 满足 \(T \subseteq A_1\)\(T \subseteq A_2\),此时 \(S \setminus T\) 内的可以选入 \(A_1\)\(A_2\),所以这里是 \(\sum \limits_{T \subseteq S} \mathrm{coef}_{T}2^{|S|-|T|}\)。显然取 \(\mathrm{coef}_{T} = (-2)^{|T|}\) 即可。

然后直接从前往后 DP。复杂度 \(O(n^3)\)

65 CF2231F

根据四平方和定理,答案不超过 \(4\)

只需判定答案是否为 \(1,2,3\)

每个点度数 \(O(\sqrt n)\),只需要 \(O(1)\) 判断两个点距离是否为 \(2\) 即可 \(O(q \sqrt n)\) 解决原问题。

对于 \(u<v\) 判定距离是否为 \(2\) 等价于判定是否有 \(x,y\) 使得 \(x^2+y^2=v-u\)\(x^2-y^2=v-u\)\(u+x^2 \leq n\)\(v - y^2 \geq 1\)\(x^2-y^2 = (x+y)(x-y)\),对 \(1\)\(n\) 内所有数分解质因数可得 \(O(n \ln n)\)\(x,y\),每组限制 \(u,v\) 范围即可。

总复杂度 \(O((n+q)\sqrt n)\)

66 CF2230F

显然后手每次删去先手某个邻居方向的整棵子树。

先考虑静态问题。直接 DP。\(f_{i,j,k}\) 表示现在在点 \(i\),上一次走的是点 \(j\),现在是第 \(k\) 步是否可行。

注意到后手可以每次删去重儿子子树,所以答案不超过 \(O(\log n)\)。直接二分出所有答案变化位置即可。复杂度 \(O(n \log^2 n)\)

67 QOJ4241

将 L 形转化成左边和右边选一个,上面和下面选一个。

将每个位置左边和右边连边,上面和下面连边,变为每条边选择一个端点且选择的端点两两不同。

讨论每个连通块是树还是基环树即可。

68 QOJ4242

直接 DP。

式子形如 \(f_i = \left(\max \limits_{1 \leq j < i,a_jx_i+b_j \geq y_i} f_j\right)+1\)

这个问题等价于从前往后依次考虑询问一个半平面内的点权最大值,然后加入一个点。

对值域建立线段树,然后线段树上每个点维护动态凸包或者动态开点李超树即可。复杂度 \(O(n \log^2 n)\)

69 QOJ18123

对于目前点集 \(S\),考虑找出一个极大独立集 \(I\)。方法是从前往后依次询问 \(I \cup \{x\}\)。递归处理 \(S \setminus I\),然后考虑求出 \(I\)\(S \setminus I\) 之间的边。

考虑每个 \(x \in S \setminus I\),希望求出 \(x\)\(I\) 之间的边。直接二分即可。

分析次数。首先求出每条边要花 \(\lceil \log_2 n \rceil\) 次询问。求完每条边后进行一次询问判定之后和 \(S\) 之间还有没有边。此外加入独立集时,对于每个 \(x \notin I\),将这次询问算入 \(x\)\(I\) 连的第一条边中。这样每条边至多贡献 \(2 + \lceil \log_2 n \rceil\) 次,每个点在加入独立集时贡献一次。总次数不超过 \(n+m(2 + \lceil \log_2 n \rceil)\)

70 QOJ4406

考虑最终每个点的贡献系数,必定为 \(+1\)\(-1\)

考虑这个过程:初始每个点有集合 \(S_i = \{i\}\),以及贡献系数 \(w_i=1\)。每次操作选择 \(x\)\(\forall y \in S_x: w_y \gets -w_y\)。然后对于所有 \((x,v) \in E\)\(S_x \gets S_x \cup S_v\),并且 \(S_v \gets \varnothing\)。最终要求存在 \(x\) 使得 \(S_x =[n]\),在此基础上最大化 \(\sum \limits_{i=1}^n w_id_i\)

注意到在点 \(x\) 操作一次后,我们可以选择在 \(x\) 再进行一次操作以对 \(S_x\) 内所有点系数取反。所以最终 \(S_x\) 内的贡献系数可以为 \(+1\) 也可以为 \(-1\),与之后进行的任何操作无关。

所以问题改为,初始 \(w=0\),每次选一个点 \(i\),令 \(s=-d_i + \sum \limits_{(i,j) \in E} d_j\),然后 \(w \gets w + \max\{s,-s\}\),将 \(i\) 与所有邻居的 \(d\) 设为 \(0\)。最终要求 \(w\) 最大。

这个问题形如对每个点选择邻居和自己在内的若干点,选邻居的系数是正 \(1\),选自己的系数是 \(-1\)。求和后可以将值取反。要求最终所有权值和最大。但是并不是所有选法都可行。

具体来说,一个选择方案合法当且仅当:

  1. 存在一个点,选择了自己和其所有邻居。这是因为第一次操作的点必然满足此要求。
  2. 不存在边 \((u,v) \in E\),使得 \(u\) 选了 \(v\)\(v\) 选了 \(u\)
  3. 不存在边 \((u,v) \in E\),使得 \(u\) 选了 \(u\)\(v\) 选了 \(v\)
  4. 每个点恰好被选了一次。

对此 DP 即可。复杂度 \(O(n)\)

71 QOJ4792

不难注意到两个维度是独立的。所以这个问题只需要考虑将每行和每列哈希出来,问题变为一维,直接将答案相乘即可。

现在我们考虑一维问题。我们希望求有多少个区间 \([l,r]\) 使得 \([1,l-1]\)\((r,n]\) 可以折叠过去。

考虑记 \(f_i\) 表示 \([1,i]\) 可以全部折叠到 \([i+1,n]\)\(g_i\) 同理表示后缀信息。

现在考虑 \(f\) 的转移。对于一个长度为偶数的回文串 \([i+1,x]\),我们有 \(f_i \rightarrow f_{\frac{i+x}{2}}\)。对于 \(g\) 的转移同理。

我们声称 \([l,r]\) 能被折叠出来当且仅当 \(f_{l-1}=g_{r+1}=1\),至此跑个马拉车即可。复杂度 \(O(nm)\)\(O(nm \log nm)\),依赖于具体实现。

\(l-1\) 前缀和 \(r+1\) 后缀独立的结论并不显然,看起来会存在前缀折叠后导致后缀长度不够的情况。但是考虑 \([i+1,x]\) 折叠左侧这半,其不行当且仅当右侧被折叠掉了。这时右侧的折叠一定不依赖于 \([1,i]\),所以改为左侧先折就行了。

72 QOJ4758

这个结构显然是要分类讨论行走过程。假设 \(x\)\(y\) 先走到环上,对交点可能存在的位置分类讨论:

  1. \(x\) 到环的链上,也在 \(y\) 到环的链上。
  2. \(x\) 所处连通块的环上,但在 \(y\) 到环的链上。
  3. 分别处于 \(x,y\) 连通块所在链上。

这些结构应该是方便利用距离等于深度差在模环长意义下进行维护的。

73 QOJ4814

这个结构基本等价于选择若干路径两两除端点不交。

考虑对所有给定点建虚树,在树上 DP。\(f_u\) 表示子树答案。每条路径在其 LCA 处考虑其是否选择,要计算一条路径外面挂的所有点权和。维护每个点的儿子权值和之类的即可。复杂度 \(O(n \log n)\)

74 QOJ4816

先考虑没询问,只求原问题方案数。直接 DP。\(f_{i,j,0/1}\) 表示以 \(i\) 为根的子树,点 \(i\) 权值为 \(j\),子树内是否存在一个点比其儿子点权大。

询问直接换根 DP 就行。

复杂度 \(O(nm^2+q)\)

posted @ 2026-05-01 17:52  HappyBobb  阅读(337)  评论(0)    收藏  举报