记录编号 594934 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 正负游戏 最终得分 100
用户昵称 Gravatar徐诗畅 是否通过 通过
代码语言 C++ 运行时间 0.195 s
提交时间 2024-10-06 10:41:03 内存使用 3.63 MiB
显示代码纯文本
#include<iostream>
#define int long long
using namespace std;
const int N=1e6+5,mod=998244353;
int n,m,k,x1[N],x2[N],y1[N],y2[N];
int ans=1,flag=0;
int qpow(int a,int b){
	int ans=1;
	while(b){
		if(b&1) ans=ans*a%mod;
		a=a*a%mod;
		b>>=1;
	}
	return ans;
}
signed main(){
	freopen("plusminus.in","r",stdin);
	freopen("plusminus.out","w",stdout);
	scanf("%lld%lld%lld",&n,&m,&k);
	if((n+m)&1){
		puts("0"); return 0;
	}
	if(m>n){swap(n,m), flag=1;}
	for(int i = 1;i<=k;i++){
		int x,y,z; scanf("%lld%lld%lld",&x,&y,&z);
		if(flag) swap(x,y);
		x1[x]++; if(z==-1) x2[x]++;
	}
	for(int i = 1;i<=n;i++){
		if(x1[i]<m){
		     ans=ans*(qpow(2,m-x1[i]-1))%mod;
		   // cout<<m-x1[i]-1<<" "<<1<<(m-x1[i]-1)<<" "<<qpow(2,m-x1[i]-1)<<endl;
		}
		else{
			if(x2[i]%2==0){
				ans=0; break;
			}
		}
	}
	printf("%lld",ans*qpow(qpow(2,m-1),mod-2)%mod);
	return 0;
}