[题解]CF2092E She knows...

挺有意思的一个题。

思路

在下文中,记 \(col_{x,y} = \operatorname{color}(x,y)\)

因为颜色只有 \(0,1\),那么 \(|A|\) 等于相邻两个位置 \((x_1,y_1),(x_2,y_2)\) 满足 \(col_{x_1,y_1} + col_{x_2,y_2} \equiv 0 \pmod 2\) 的数量。

我们需要满足 \(|A| \bmod 2 = 0\),即满足 \(\sum_{x_1 \leq x_2 \wedge y_1 \leq y_2 \wedge |x_1 - x_2| + |y_1 - y_2| = 1}col_{x_1,y_1} + col_{x_2,y_2} \equiv 0 \pmod 2\)

考虑一个点 \((x,y)\)\(col_{x,y}\) 会做贡献的次数。注意到若 \(x = 1 \vee x = n \vee y = 1 \vee y = m\) 并且 \((x,y) \neq (1,1),(1,m),(n,1),(n,m)\),贡献的次数为 \(3\);其余位置的点贡献次数均为偶数。这意味着只有前者的颜色会对最后 \(|A|\) 的值有影响,其余位置的点都可以任选颜色。

记被钦定颜色的满足 \(x = 1 \vee x = n \vee y = 1 \vee y = m\) 并且 \((x,y) \neq (1,1),(1,m),(n,1),(n,m)\) 的点的数量为 \(cnt\),它们的颜色和为 \(sum\),则:

  • \(cnt = 2 \times (n + m - 4)\)
    • \(sum \equiv 0 \pmod 2\),答案为 \(2^{nm - k}\)(除了这 \(k\) 个点的颜色都可以任选)。
    • 否则,答案为 \(0\)
  • 否则,答案为 \(2^{nm - k - 1}\)(当边缘的点只剩下一个没有被填颜色,那么这个点的颜色已经被确定,因为需要满足边缘点的颜色和为偶数)。

Code

#include <bits/stdc++.h>
#define re register
#define int long long
#define Mul(a,b) ((a) * (b) % mod)
#define chMul(a,b) (a = Mul(a,b))

using namespace std;

const int mod = 1e9 + 7;
int n,m,k;

inline int read(){
    int r = 0,w = 1;
    char c = getchar();
    while (c < '0' || c > '9'){
        if (c == '-') w = -1;
        c = getchar();
    }
    while (c >= '0' && c <= '9'){
        r = (r << 3) + (r << 1) + (c ^ 48);
        c = getchar();
    }
    return r * w;
}

inline int qmi(int a,int b){
    int res = 1;
    while (b){
        if (b & 1) chMul(res,a);
        chMul(a,a); b >>= 1;
    } return res;
}

inline void solve(){
    int cnt = 0,sum = 0;
    n = read(),m = read(),k = read();
    for (re int i = 1,x,y,c;i <= k;i++){
        x = read(),y = read(),c = read();
        if ((x == 1) + (x == n) + (y == 1) + (y == m) == 1) cnt++,sum += c;
    }
    if (cnt == 2 * (n + m - 4)){
        if (sum & 1) puts("0");
        else printf("%lld\n",qmi(2,n * m - k));
    }
    else printf("%lld\n",qmi(2,n * m - k - 1));
}

signed main(){
    int T; T = read();
    while (T--) solve();
    return 0;
}
posted @ 2025-04-04 21:21  WBIKPS  阅读(29)  评论(0)    收藏  举报