【题解】CF1574E Coloring 棋盘染色模型
考虑给定一个空棋盘的染色方案。
对于诸如每个 \(2\times 2\) 的子矩阵的限制,可以考虑钦定第一行 / 第一列的状态,考虑相邻两行 / 相邻两列的限制计算出方案数。
对于合法的染色方案,一定要满足相邻两行颜色相反 / 相邻两列颜色相反的条件之一。
- 若存在相邻两列在某行的位置颜色相同且合法,那么相邻两行的颜色一定相反。
那么对应着的就是钦定第一行 / 第一列的方案数减去同时满足相邻两行颜色相反且相邻两列颜色相反的方案数。
那么考虑进限制,相当于钦定第一行的某列的颜色 / 钦定第一列某行的颜色。
\(\text{std::set}\) 维护这些位置即可。