CF431D
CF431D
给定一张棋盘,\(n\times n\) 的大小,每个位置有一个权值。
每次你可以选择一个大小为 \(m\times m\) 的矩形翻转其中权值,其中 \(m=\frac{n+1}{2}\)
最大化权值和。
\(n\le 33\),保证 \(n\) 为奇数。
\(\rm Sol:\)
好仙的题呀qwq
设 \(m=\frac{n+1}{2}\),根据观察,设 \(w_{x,y}\) 表示点 \((x,y)\) 的取反情况,我们会发现 \(w_{x,y}\oplus w_{x,m}\oplus w_{x,m+y}=0\),这是因为我们每次取反矩阵要么取反其中 \(0\) 个要么取反其中一个,列同理。
进一步观察,可以使用的 \(m^2\) 个矩阵是线性无关的,单看前 \(m\times m\) 个位置,我们发现翻转状态任意的矩形都是合法的(可以将每个线性无关的 \(m\cdot m\) 的矩形规定在左上角,然后从上往下依次进行翻转)
根据初始结论,这些位置将确定剩余的位置的局面。
换而言之,对于 \(x,y<m\) 单看 \((x,y),(x+m,y),(x,y+m),(x+m,y+m)\) 这 \(4\) 个位置,当中间一列与中间一行确定之后这 \(4\) 个位置绑定,而彼此独立,所以可以直接枚举最优决策了。
于是我们得到一个 \(\mathcal O(4^m\times n^2)\) 的做法了。
考虑进一步优化,我们发现如果将行的状态确定下来,那么每一列以及其影响的相绑定的一列的决策均固定,所以我们可以直接枚举行的状态并 check 答案(注意只需要枚举前一半),复杂度为 \(\mathcal O(n^2 2^{\frac{n}{2}})\)