记录编号 594943 评测结果 AWAWAAWAAWWWWWWWWWWW
题目名称 正负游戏 最终得分 30
用户昵称 Gravatarwdsjl 是否通过 未通过
代码语言 C++ 运行时间 0.626 s
提交时间 2024-10-06 14:34:47 内存使用 26.48 MiB
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
using namespace std;
const int N = 1e6 + 5, MOD = 998244353;
int n , m , K , e;
vector<int> a[N];

int ksm(int x, int k){
    int ans = 1, now = x;
    while(k){
        if(k & 1){
            ans = ans * now % MOD;
        }
        now = now * now % MOD;
        k >>= 1;
    }
    return ans;
}
signed main(){
	freopen("plusminus.in","r",stdin);
	freopen("plusminus.out","w",stdout);
    scanf("%d%d%d",&n,&m,&K);
	if((n & 1) + (m & 1) == 1){
        printf("0");
        return 0;
    }
	int e=0;
	if(n<m){
		e=1;
		swap(n,m);
	}
	for(int i=1;i<=K;i++){
		int xx,yy,zz;
		scanf("%d%d%d",&xx,&yy,&zz);
		if(e){
			swap(xx,yy);
		}
//		cout<<xx<<yy<<zz<<endl;
		a[xx].push_back(zz);
	}
	int res=1;
	for(int i=1;i<=n;i++){
		if(a[i].size()<m)res=(res*ksm(2,m-a[i].size()-1))%MOD;
		else{
			int op=1;
			for(auto v:a[i]){
				op*=v;
			}
			if(op==1){
				res=0;
			}
		}
	}
    printf("%lld\n", res * ksm(ksm(2, m - 1), MOD - 2) % MOD);
    return 0;
}