题解:P15653 [省选联考 2026] 星图 / starmap
Priestess_SLG · · 题解
建议先完成 ARC205B,P9841(比较重要)和 P14025。
其实也可以算是一类造计算机题?
直接在原图上维护操作是困难的,套路的考虑在图的反图上执行操作,这样问题转化为要求执行操作使得最终图上边的数量最少。
光轨数量的最大值
为了方便计算,该部分的讨论都将在原图的补图上进行。
考虑从奇偶性的方向入手。注意到若一次恰好可以选择
-
-
+ 若 $[2\mid m]=[2\mid\frac{\sum\limits_{i=1}^n[2\nmid\deg_i]}2]$,则此时显然可以在不改变奇偶性的前提下把边数删到答案下界 $\frac{\sum\limits_{i=1}^n[2\nmid\deg_i]}2$。 + 否则: + 若图上所有点的度数都为偶数,则此时最小可以达到的答案是 $3$。 + 若图上存在点的度数是奇数,则此时最小可以达到的答案为 $\frac{\sum\limits_{i=1}^n[2\nmid\deg_i]}2+1$。 -
-
而
最后用总数
构造流程
考虑先从特殊情况入手:
0x01 k=2
显然每次操作一条被连起来的边就可以删除该边。
0x02 k=3
此时操作形如每次反转一个三元环。容易想到先简单消去图上所有的环,得到一个森林。
然后对于森林上每一个非单独结点组成的树结构,均可以通过下面的操作让该树最终剩下恰好一条边:
- 选择三个点
u,v,w 满足当前树上存在一条u\leftrightarrow v\leftrightarrow w 的链。 - 对
u,v,w 三个点做一次操作,此时v 点脱离树结构成为单独点,u,w 两点之间连了一条边。
容易发现这样恰好可以取到前面分析
剩下
0x11 长度为 4 的环
考虑类比 P9841 的套路,通过调用若干次操作得到一个比较简单的操作形式。
考虑执行下面的
- Step
1 :x_1,x_2,\ldots,x_{k-2},i,j - Step
2 :x_1,x_2,\ldots,x_{k-2},j,k - Step
3 :x_1,x_2,\ldots,x_{k-2},k,p - Step
4 :x_1,x_2,\ldots,x_{k-2},p,i
执行上面的
0x12 长度为 n 个点的环(2\mid n )
这里为了简化操作,定义一个长度为
- 对于任意整数
i 满足1\le i<n ,i,i+1 两点之间都有一条边。 -
考虑分类讨论,考虑下面的策略:
- 选择
1,2,3,4 四个点执行K_4 的操作,这样2,3 两个点可以单独脱离环,然后1,4 两个点会多出一条连边,得到形如1-4-5-6-\ldots-n-1 的环。这个操作可以每次从环上单独分离出两个点。 - 重复执行上述操作直到环上点数量
\le 4 为止。
此时因为
0x13 u\leftrightarrow v\leftrightarrow w 的链(2\mid k )
目标是在图中反转
- Step
1 :x_1,x_2,\ldots,x_{k-2},u,v - Step
2 :x_1,x_2,\ldots,x_{k-2},v,w
此时
此时通过
0x14 (u,v),(u,w),(v,w),(i,j),(i,k),(j,k) 六条边(两个 K_3 )
考虑执行下面的操作:
- Step
1 :x_1,x_2,\ldots,x_{k-2},u,v - Step
2 :x_1,x_2,\ldots,x_{k-2},u,w - Step
3 :x_1,x_2,\ldots,x_{k-2},v,w
此时
- Step
4 :x_1,x_2,\ldots,x_{k-2},i,j - Step
5 :x_1,x_2,\ldots,x_{k-2},i,k - Step
6 :x_1,x_2,\ldots,x_{k-2},j,k
此时所有
注意到此时有
0x15 (u,v),(u,w),(v,w),(w,i),(w,j),(i,j) 六条边
和 0x14 部分本质相同,此时只需要
其实这个地方是可以和
- Step
1 :用 0x11 给出的操作反转u,v,i,j 四个点组成的四元环。 - Step
2 :用 0x11 给出的操作反转u,w,v,i 四个点组成的四元环。
容易发现此时恰好反转了
该结构的最大优势是处理
解决原问题
0x21 把原图化为特殊形态
前面已经特判掉了
此时考虑先从图中找出三个关键点
-
x=i,y=j$ 或 $x=j,y=i -
x=k$ 或 $y=k
下面考虑如何执行操作可以得到这种图。考虑执行下面的操作:
- 对于每两个点
x,y 满足x\neq i,x\neq j,y\neq i,y\neq j,x\neq y ,若图上当前没有连接x,y 两个点的边,则考虑继续分类讨论(1 ):- 若图上存在点
z 满足z\neq a,z\neq b,z\neq x,z\neq y 且x 和z 之间不存在边相连,则反转z,x,y,i 四个点组成的四元环。 - 否则,若图上存在点
z 满足z\neq a,z\neq b,z\neq x,z\neq y 且y 和z 不存在边相连,则反转x,y,z,i 四个点组成的四元环。 - 否则,直接反转
x,y,i,j 四个点组成的四元环。
- 若图上存在点
- 对于每个点
x 满足x\neq i,x\neq j,x\neq k ,考虑分类讨论x 和i,j 两点的连边关系(2 ):- 若
x 和i,j 两点都连了边,则不进行任何处理。 - 否则,若
x 和i,j 两点都没有连边,则对i,x,j,k 四个点执行一次 0x11 给出的操作即可。 - 否则,若
x 和i 没有连边,则对i,x,k,j 四个点执行一次 0x11 给出的操作即可。 - 否则(即只有
x 和j 没有连边),则对j,x,k,i 四个点执行一次 0x11 给出的操作即可。
- 若
现在理性的分析一下上面给出的流程都干了什么事。这里为了方便描述,将上述流程分为
对于流程
对于流程
此时显然可以达成该部分想要达成的目标。
考虑回到问题的开始。在这片题解的最初通过对
0x22 k\equiv 2\pmod 4
从最简单的情况入手讨论。
此时既没有边数量奇偶性的约束条件,也没有点度数的奇偶性约束条件。
这里先考虑没有被连的边的数量是偶数的情况。
考虑在 0x21 部分中找出三个关键点
此时所有二元组
而如果没有被连的边的数量是奇数,则在 0x21 修改图的形态之前,直接随便选
0x23 k\equiv 0\pmod 4
其实和 0x22 没有本质区别?
把 0x22 里第一步调整没有被连的边的奇偶性那一步删掉,后面的部分完全是一样的。
0x24 k\equiv 3\pmod 4
这里先考虑没有被连的边的数量是偶数的情况。
考虑在 0x21 部分中找出三个关键点
此时所有二元组
但是此时仍然没有达到答案的下界,需要进一步进行操作:
- 若存在四个点
x,y,z,w 满足x\leftrightarrow k,y\leftrightarrow k,z\leftrightarrow k,w\leftrightarrow k 四条边都不在图中存在,那么用前面 0x15 的操作反转k\leftrightarrow x,k\leftrightarrow y,k\leftrightarrow z,k\leftrightarrow w,x\leftrightarrow y,z\leftrightarrow w 这六条边。 - 此时,若
x,y 两点还满足x\leftrightarrow k,y\leftrightarrow k 两条边都不存在,且i,j,k 三个点得到的三条边只有不超过一条边存在,那么用前面 0x15 的操作反转k\leftrightarrow i,k\leftrightarrow j,k\leftrightarrow x,k\leftrightarrow y,i\leftrightarrow j,x\leftrightarrow y 这六条边即可。
这一步操作可以尽可能的减少图上任意一点
- 若对于图上的结点
x ,i\leftrightarrow j,i\leftrightarrow k,j\leftrightarrow k,x\leftrightarrow k 四条边都没有连,那么考虑找出x,i,j,k 之外的任意一点y 。 - 此时考虑用操作 0x15 来反转
i\leftrightarrow j,i\leftrightarrow k,j\leftrightarrow k,k\leftrightarrow x,k\leftrightarrow y,x\leftrightarrow y 六条边(即补齐i,j,k 三角形上的边以及一条k 连向外部的边)。 - 若此时
i\leftrightarrow j,i\leftrightarrow k,j\leftrightarrow k,x\leftrightarrow y 四条边都没有连,则用操作 0x15 来反转i\leftrightarrow j,i\leftrightarrow k,j\leftrightarrow k,k\leftrightarrow x,k\leftrightarrow y,x\leftrightarrow y 六条边(即补齐i,j,k 三角形上的边以及一条在i,j,k 以外的边)。 - 此时再找出点
w 满足w\neq i,w\neq j,w\neq k,w\neq x,w\neq y ,则若此时i\leftrightarrow k,x\leftrightarrow k,y\leftrightarrow k,z\leftrightarrow k 四条边都没有连,则用操作 0x15 来反转i\leftrightarrow k,i\leftrightarrow x,k\leftrightarrow x,k\leftrightarrow y,k\leftrightarrow z,y\leftrightarrow z 六条边(即补齐i,k 两点之间的边以及k 外面挂着的三条缺失的边)。 - 若此时
j\leftrightarrow k,x\leftrightarrow k,y\leftrightarrow k,z\leftrightarrow k 四条边都没有连,则用操作 0x15 来反转j\leftrightarrow k,j\leftrightarrow x,k\leftrightarrow x,k\leftrightarrow y,k\leftrightarrow z,y\leftrightarrow z 六条边(即补齐j,k 两点之间的边以及k 外面挂着的三条缺失的边)。
此时图上只有
- 如果
i\leftrightarrow j,j\leftrightarrow k,k\leftrightarrow v 都缺边,那么直接反转i,j,k,v 组成的四元环即可。 - 如果
i\leftrightarrow j,i\leftrightarrow k,k\leftrightarrow v 都缺边,那么直接反转j,i,k,v 组成的四元环即可。
可以证明此时图的边数一定达到了上界。
而对于奇数的情况,同样的,考虑在 0x21 部分中找出三个关键点
0x25 k\equiv 1\pmod 4
其实和
代码实现
有一万个 corner case,还没调出来/ll
代码长度 12.19K,写了整整一夜最后还是对着题解调出来的,所以就不放代码了,没有代码能力是这样的/ll/ll/ll
Reference
分类讨论中