互测记录

Round 1

A 携春同行

有一个隐藏的数组 \(a_0,\dots,a_{n-1}\),定义 \(D(T)\)\(T\) 这棵树以 \(a\) 为点权时的直径。

你需要在 \(n+1\) 次查询和 \(20\) 次猜测之内确定至少 \(n-2\)\(a_i\)

  • 查询:询问一棵树 \(T\),返回 \(D(T)\),这个操作你只能将所有查询绑到一起调用一次得到所有结果。
  • 猜测:询问树 \(T\)\(x\),返回 \([D(T)=x]\),这个操作每次猜测后可以立刻知道结果。

\(1\le a_i\le 10^9,10\le n\le 500\)


好题。

首先可以通过恰好 \(n+1\) 次操作解方程确定前两大的和,以及第三大的值与非前三大值及其对应的点。

我们需要在前三大的点中确定前两大的位置。

我们希望构造一个简单的结构,可以钦定一条链为直径。

先用确定点构造一条链,左右侧各挂若干不确定点(挂成链),链中点上挂若干不确定点(挂成菊花)。

且我们保证左到右的路径是唯一的最长路,即钦定这是直径,那么当我们判断他是否取到可能的最大值,若取到,说明前两大在左右侧,否则说明前两大并不同时在左右侧。

那么我们可以判断一个集合是否不存在前两大,对于进行两次二分即可确定前两大位置。

现在的条件是中间链长度 \(\ge 3\),且左到右的路径是唯一的最长路。

当不确定点较少时,先找若干个顶上即可。

这里再描述一下题解做法。

当确定点(设有 \(W\) 个)较少时,我们考虑用一些非确定点。

\(k=\max(2,3-W)\),将非确定点分为大小为 \(k\)\(3\) 组,可以分析出由于 \(n\ge 10\),这是可行的。

使用两次循环判断,一定能找出一组不存在前两大,将其补充进确定点。

然后再根据上面的那个结构,不过现在是三个位置都挂成菊花。

则当前两大分居左右两侧时,才能达到上界。

于是按照如下做法,确定前两大:

  • 枚举 \(w\ge 0\),将非确定点根据二进制第 \(w\) 位的值分配到左右侧。若询问成功则退出枚举,此时用了 \(w+1\) 次猜测。
  • 二分左侧集合,每次取出一半的加入中点上,可以确定有效点在哪个部分中,使用 \(\log n-1\) 次猜测。
  • 然后再对 \(y\) 进行二分,但是这样次数就爆了,发现我们是知道两个有效点二进制下 \(w\) 位是相同的,先将不合法的东西扔掉,这部分的次数变为 \(\log n-1-w\)

妙妙题。

分别由“确定一个集合不存在有效点”与“确定有效点分居两个集合”从而导出两种不同的做法。

B Everlasting Friends?

给出原树 \(T_0\)

定义 \(T_1\) 为按 \(1\to n\) 顺序加入点后的点重构树,\(T_2\) 为按 \(n\to 1\) 顺序加入点后的点重构树。

定义 \(f(A,B)\) 为使得 \(S\)\(A,B\) 上的导出子图均为联通块的 \(\{1,2,\dots,n\}\) 的非空子集 \(S\) 个数。

\(f(T_1,T_0)\)\(f(T_1,T_2)\) 取模后的值。

\(n\le 2\times 10^5\)


绝世好题。

\(f(T_1,T_0)\)

枚举联通块最大值 \(mx\),只考虑 \(T_1\)\(mx\) 的子树。

钦定选择 \(mx\) 的儿子 \(u\),则两点原树路径上所有点都要选,使用队列维护可以得到所有必要的点,发现这时加入的点必然是 \(u\) 子树内的点。

最后得到一个联通块,设其为选择 \((u,mx)\) 这条边的必要联通块。

那么对这个联通块下面的边都是可以选择的,选上了就扩展他的必要联通块,通过这个可以递归出 \(h_{mx,u}\) 表示选择这条边情况下的联通块个数(只考虑 \(mx\) 以及 \(u\) 子树),答案就是联通块下面断开的边的 \(h\) 相乘。

不难发现选择 \(mx\) 的边互相是独立的,故 \(mx\) 的答案就是其儿子边的 \(h+1\) 相乘。

我们希望快速刻画联通块下面的边。

如果原树跨过 \((x,fa_x)\) 的边超过一条,则这条边不能断开,若断开,\(x\) 子树自成联通块,但是其他点他们构不成联通块了,因为删掉了超过一条边。

而跨过边恰好为 \(1\) 的就可以断开,问题变成可以断掉一些边,求包含根的联通块个数。

每条边的状态最多变化一次,修改则是加入原树边 \((v,mx)\) 时将路径上都覆盖为不可断开。

考虑维护 \(f_u\) 表示 \(u\) 子树答案,我们只需确保当前还可以断开的边的 \(f\) 是正确的。

对于一次覆盖,我们找到所有改变状态的边,贡献系数则为 \(\frac{f_x}{f_x+1}\),正确性可以理解为从上往下将边设为不可断开,这样只需变一下拼上的东西。

但是会出现乘 \(0\)\(0\) 的情况,考虑维护 \(a\times 0^b\),四则运算都是能维护的。

时间复杂度 \(\mathcal O(n\log n+n\log Mod)\)

\(f(T_1,T_2)\)

\(T_1,T_2\) 均为联通块,则 \(T\) 上也是联通块。考虑点集在 \(T\) 上的虚树:

  • 由于 \(T_1\) 为联通块,则虚树只能包含该点集以及编号小于边界点的点,否则较小边界点往较大边界点走一定会碰到一个 \(T_1\) 上的非该点集的祖先。
  • 由于 \(T_1\) 为联通块,则虚树只能包含该点集以及编号大于边界点的点。

枚举 \(\min =u,\max =v\),依旧使用队列扩展出必要集合,就有暴力做法了,但是难以优化。

考虑以 \(T\) 上联通块为出发点,初始加入 \(u-v\) 的路径,重复执行以下操作:

  • 对于当前点集邻域中满足 \(u\le z\le v\)\(z\),将其加入点集。这是必要的,否则假设 \(fa_z<z\),那么 \(z\)\(T_1\)\(fa_z\) 的祖先,反之同理。而原树上 \(z<u\)\(z>v\) 显然不能加入点集。

最后扩展出一个唯一的联通块,显然其是唯一的可能合法联通块。

考察更多性质,首先点集内的点是 \(T_1,T_2\) 子树的交,考虑证明其是全交。

由于交集必然 \(\in [u,v]\),则原树上他到根上的点也 \(\in [u,v]\),则交集都会加入点集。

所以现在问题变为求 \((u,v)\) 个数,满足 \(u\)\(T_1\)\(v\) 的子树,\(v\)\(T_2\)\(u\) 的子树,且 \(u,v\) 子树的交集各构成一个联通块。

考虑点减边容斥,对于点与边,只要都是 \(u,v\) 子树交集就有贡献。

\(T_1\),在 \(T_2\) 上做链加。

\(v\)\(T_2\)\(u\) 子树内这个限制可以通过查询 \(T_2\)\(v\) 到根链限定。

对于另外一个限制,考虑扫的时候将 \(T_1\)\(v\) 子树在第二棵树对应点 \(-1\),那么现在满足前面条件的点权值 \(\ge 1\),且恰好满足 “ \(u\)\(T_1\)\(v\) 的子树” 的点权值为 \(1\)

这一部分时间复杂度 \(\mathcal O(n\log^2 n)\)

C 集你太美

给定一张 $ n $ 个结点的无向完全图 $ G $,边 $ (i, j) $ 带非负整数权 $ v_{i,j} $,保证 $ v_{i,i} = 0 \(,\) v_{i,j} = v_{j,i} $。

同时,每个结点有一个非负整数变量 $ w_i $。

定义对一个点 $ i $ 进行一次收集操作为,将 $ w_i $ 的值加上 $ \sum_j v_{i,j} $,并将 $ w_j $ 的值减去 $ v_{i,j} $。称一次对点 $ i $ 的收集操作合法,当且仅当操作前 $ w_j \ge v_{i,j} $。

在图 $ G $ 上称一组点权收集-free,当且仅当以这组点权为初始状态,存在一种方式,能够进行无限次合法的收集操作。

你有两种任务。第一种,构造一组点权 $ w'_i $,使得 $ w'_i $ 收集-free,且最小化 $ \sum_i w'_i $;第二种,给定一组点权 $ w'_i $,你需要判断 $ w'_i $ 是否 收集-free。

给出 \(m\) 条权值非 \(0\) 的边 \((i,j,v)\)

$ 1 \le n \le 3 \times 10^5 \(,\) 0 \le m \le \min\left(10^6, \frac{1}{2}n(n-1)\right) \(,\) 1 \le i < j \le n \(,\) (i, j) $ 互不相同,$ 1 \le v \le 10^9 \(,\) 0 \le w'_i \le 10^{18} $。


猜测如果图是收集-free,必然存在某种排列顺序重复操作某一个联通块的方案。

发现操作之后总和不变,且在操作 \(i\) 之前,其权值恰好为 \(W_i\) 减去他前面操作的点的 \(v_{j,i}\)

对于任务一,考虑到 \(\sum_i \sum_{(i,j)\in E}v_{i,j}[ord_j<ord_i]=\sum_{(i,j)\in E}v_{i,j}\),由于需要 \(\displaystyle W_i+\sum_{(i,j)\in E} -v_{i,j}[ord_j\lt ord_i]\geq 0\),那么对于每一种 \(ord\) 来说,\(\sum W_i\) 都是固定的,取 \(ord_i=i\) 来模拟即可。

对于任务二,直接做看起来非常困难,正难则反

操作转化为 \(\forall (i,j)\in E,w_j\leftarrow w_j+v_{i,j}\),且令 \(w_i\leftarrow w_i-\sum_{(i,j)\in E} v_{i,j}\),限制是操作一个 \(w_i\) 时操作完后 \(w_i\ge 0\)

假如我们确定了最后一个数,则对其他的 \(w\) 的影响是让他们变得更大,限制更松,所以这样没有后效性!!!

时间复杂度 \(\mathcal O(n\alpha (n))\)

感觉这相当于拓扑排序从前往后与从后往前做的区别!!!

Round 3

A

C

Round 4

A

B

求解关于字典序的最小割

考虑最小割解决问题。

建图

但是本题有三种情况,不妨考虑拆点 \(x_u, y_u\)

\(ST\) 表示 \(A\)\(TS\) 表示 \(B\)\(SS\) 表示 \(C\)

根据两点 \(a,b\) 的四种边(对称也得有一条),\((x_a,x_b),(x_a,y_b),(y_a,x_b),(y_a,y_b)\),解方程可以得到每种边的取值,进而观察出 \(TT\) 是不优的。

定理 \(0\) 对于一个流,增广轮数为 \(\sqrt{\sum_u \min(d_{in}(u),d_{out}(u))}\)

证明:Dinic 的多路增广是同时把所有最短路相同的增广路都做了。??

则经过了 \(\sqrt S\) 轮后,最短路不会低于 \(\sqrt S\)

????

定理 \(1\) 最大流等于最小割。

证明:首先证明任意割 \(\ge\) 任意流,设 \(C\) 为割边集合,\(c\) 为边容量,\(f\) 为流量。

则有:

\[\sum_{(u,v)\in C}c(u, v)\ge \sum_{(u,v)\in C} f(u,v)\ge \sum_{(u,v)\in C} f(u,v)-\sum_{(u,v)\in E\and u\in T\and v\in S} f(u,v) \]

最后一行意义为 \(S\) 集合到 \(T\) 集合的流量。

然后我们证明,对于最大流,存在割的方案使得两个符号取等。

也就是:\(S\to T\) 所有边满流,且不存在 \(T\to S\) 的流量。

求解任意一种最小割方案就考虑令残量网络上源点能到的为 \(S\) 集合,剩下为 \(T\) 集合。

\(S\to T\) 满流,否则能扩展 \(S\);且不存在 \(T\to S\) 的流量,否则也能扩展。

定理 \(2\) 对于最大流的一组方案,若一条残量网络中的反边位于任何一个环中,则它

对应的正边不属于最小割。

证明:满流是成为割的必要条件,若边不满流,则该边不是最小割,且正反边都存在流量,即存在两个点的环。

否则,若反边处于环中,沿着环做一次增广(此时每个点的入流出流不变,也符合流),这条边就不满流了,即在新的最大流方案上,这条边不是割边。(那这能否说明他一定不是割边呢?定理一证明了对于任意最大流和最小割两个满足:\(S\to T\) 所有边满流,且不存在 \(T\to S\) 的流量。)

由定理 \(2\),对残量网络缩点,则剩下边要么满流,要么没有流量(否则就并起来了),且一个 SCC 被完整划入 \(S\)\(T\)

定理 \(3\) 对于缩点后的 DAG,一个划分集合的方案合法,当且仅当不存在 \(T\)\(S\) 的满流边或 \(S\)\(T\) 的空边(对于正边来说)。

我们建立保留所有空边的反边,以及满流边,则合法的割满足不存在被染成 \(T\) 的点能到达被染成 \(S\) 的点,简单来说就是保留残量网络后 \(T\) 不能到达 \(S\)

接下来开始求解最小字典序的解,每次决策最小编号点的颜色:

首先尝试将其设为 A:这需要把 \(x_u\) 染成 \(T\) 并把 \(y_u\) 染成 \(S\)

那么,如果 \(x_u\)已经被染成 \(S\),或 \(y_u\) 已经被染成 \(T\),或者 \(x_u\) 能到达 \(y_u\),那么这就是不能做到的。

否则,只需从 \(x_u\) 出发搜索所有能到达的点染成 \(T\),从 \(y_u\) 出发在反图上搜索所有能到达的点染成 \(S\) 即可。

然后设为 \(B\)\(C\) 的情况同理。

然后一个前置问题是 DAG 可达性,这需要用 bitset 维护,但是空间开不下,由于询问是确定的,对询问分块可以解决这个问题。

单次求解复杂度 \(\mathcal O(n+m)\)

对这个过程进行 DFS,类似于求出一种方案后撤销,再判定。

总时间复杂度 \(\mathcal O(m\sqrt m+\frac{nm}{w}+(n+m)k)\)

posted @ 2025-10-23 07:27  蒟蒻orz  阅读(14)  评论(0)    收藏  举报