比赛 组合计数1 评测结果 AEEEEEEEEA
题目名称 方案数 最终得分 20
用户昵称 梦那边的美好ME 运行时间 1.205 s
代码语言 C++ 内存使用 4.05 MiB
提交时间 2026-02-26 11:33:44
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define ll long long

const ll mod=998244353;

ll n,m,r,o,f[210][210][210];
bool cover[210][210][210];

int main(){
	freopen("problema.in","r",stdin);
	freopen("problema.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>n>>m>>r>>o;
	for(int i=1;i<=o;i++){
		ll a,b,c;
		cin>>a>>b>>c;
		cover[a][b][c]=1;
	}
	f[0][0][0]=1;
	for(int i=0;i<=n;i++){
		if((i&n)==i){
			for(int j=0;j<=m;j++){
				if((j&m)==j){
					for(int k=0;k<=r;k++){
						if((k&r)==k&&!cover[i][j][k]){
							for(int x=i+1;x<=n;x++){
								if((i&x)==i){
									f[x][j][k]=(f[x][j][k]+f[i][j][k])%mod;
								}
							}
							for(int y=j+1;y<=m;y++){
								if((j&y)==j){
									f[i][y][k]=(f[i][y][k]+f[i][j][k])%mod;
								}
							}
							for(int z=k+1;z<=r;z++){
								if((k&z)==k){
									f[i][j][z]=(f[i][j][z]+f[i][j][k])%mod;
								}
							}
						}
					}
				}
			}
		}
	}
	cout<<f[n][m][r]<<'\n';
	return 0;
}