题解 P2962 [USACO09NOV] Lights G

题意

\(N\) 盏灯,初始全部关闭。

\(M\) 条边连接灯,形成一个无向图。

每盏灯有一个开关:

  • 按下第 \(i\) 盏灯的开关,会改变:

    • \(i\) 盏灯的状态;
    • 所有与第 \(i\) 盏灯直接相连的灯的状态。

也就是说,按一次某个点,会把它自己和邻居全部 开关翻转一次

现在要求:

找到一种按开关方案,使最后所有灯都亮,并且按下的开关数量最少。

保证一定存在方案。

输入:

  • 第一行:\(N,M\)
  • 后面 \(M\) 行:表示两盏灯之间有一条连接边。

输出:

  • 最少需要按多少次开关。

\(n \in [1,35]\)

思考

我们很容易发现,每个结点要么按下一次,要么不按下。 我们记每个结点被按下的次数为 \(t_i\)

我们发现,对于一个结点\(u\),我们定义\(v\)为与\(u\)直接相连的结点,它最终处于开灯状态。可以描述为。

\[\sum\limits_{v } t_v \equiv 1 \pmod 2 \]

我们定义。

\[f(u,v)= \begin{cases} 1, & \text{若 }u,v\text{ 直接相邻或者 }u=v,\\ 0, & \text{否则}. \end{cases} \]

那么原式 \(\sum\limits_{v } t_v \equiv 1 \pmod 2\) 等价于

\[\sum\limits_{i=1}^{n} f(u,i) \times t_i \equiv 1 \pmod 2 \]

对于确定的图,任意的\(f(u,v)\)是确定的。所以是一个线性方程,共\(n\)个项。同时有 \(n\) 个这样的方程,组成方程组。

考虑使用对方程组求解获得答案。

显然,转化为矩阵。高斯消元求解。

由于涉及除法和取模,使用逆远计算。

考虑如何使得解的和最小。

诺解唯一。则直接输出即可。

诺解不唯一呢?

则我们可以枚举自由元的具体值,然后对于每组具体值,带入求解。

但是复杂度太大,为\(O(2^nn^3)\)

考虑优化。

注意到,线性方程组总是满足\(自由元数+主元数=总方程数\)\(总方程数\)在本题中等于\(n\)

也就是说,\(自由元数,主元数\)总有一个不大于\(\frac{n}{2}\)

当自由元数不大于\(\frac{n}{2}\)时,依旧可以暴力枚举。

当自由元数大于\(\frac{n}{2}\)时,考虑从主元上入手。

可以dp。\(dp[i][j]\)代表前\(i\)个主元中,放了诺干个主元代表的点使得在矩阵上,所选每个主元所占有的竖线所对应的数的二进制异或和为\(j\)

posted @ 2026-08-08 11:42  txp2025  阅读(6)  评论(0)    收藏  举报