呜(哭,调不动了
查看原帖
呜(哭,调不动了
529017
Smg18楼主2023/10/16 21:49
#include<bits/stdc++.h>
using namespace std;
#define re register
#define pii pair<int,int>
const int N=46,inf=1<<27,mod=998244353;

int n,m,k;

int a[N][N],b[N][N];

int f[N][N][N][N][91];

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	
	cin>>n>>m>>k;
	for(re int i=1;i<=n;i++)
		for(re int j=1;j<=m;j++)
			cin>>a[i][j];
	for(re int i=1;i<=n;i++)
		for(re int j=1;j<=m;j++)
			cin>>b[i][j];
	
	f[1][1][0][0][0]=1;
	for(re int i=1;i<=n;i++)
		for(re int j=1;j<=m;j++){
			//不用票 
			for(re int p=0;p<=n;p++)
				for(re int q=0;q<=m;q++){
					for(re int g=a[i-1][j];g<=k;g++)
						f[i][j][p][q][g]=(f[i][j][p][q][g]+
							f[i-1][j][p][q][g-a[i-1][j]]
						)%mod;
					for(re int g=b[i][j-1];g<=k;g++)
						f[i][j][p][q][g]=(f[i][j][p][q][g]+
							f[i][j-1][p][q][g-b[i][j-1]]
						)%mod;
				}
			//只用票 
			for(re int p=1;p<=n;p++)
				for(re int q=1;q<=m;q++){
					for(re int g=0;g<=k;g++){
						f[i][j][p-1][q][g]=(f[i][j][p][q][g]+
							f[i-1][j][p][q][g]
						)%mod;
					}
					for(re int g=0;g<=k;g++){
						f[i][j][p][q-1][g]=(f[i][j][p][q][g]+
							f[i][j-1][p][q][g]
						)%mod;
					}
				}
			//买票 
			for(re int p=0;p<=n;p++)
				for(re int q=0;q<=m;q++)
					for(re int g=0;g<=k;g++){
						if(!f[i][j][p][q][g])
							continue;
						for(re int v=0;v+p<=n;v++)
							for(re int l=0;l+q<=m;l++){
								if(g+v*a[i][j]+l*b[i][j]>k)
									break;
								if(l==0&&v==0)
									continue;
								f[i][j][v+p][l+q][g+v*a[i][j]+l*b[i][j]]=(
									f[i][j][v+p][l+q][g+v*a[i][j]+l*b[i][j]]+1
								)%mod;
							}
					}
		}
	
//	for(re int i=1;i<=n;i++){
//		for(re int j=1;j<=m;j++){
//			for(re int q=0;q<=k;q++)
//				cout<<f[i][j][0][0][q]<<" ";
//			cout<<"  ";
//		}
//		cout<<"\n";
//	}
	
	for(re int i=1;i<=n;i++){
		for(re int j=1;j<=m;j++)
			cout<<f[i][j][0][0][k]<<" ";
		cout<<"\n";
	}
	
	return 0;
}
2023/10/16 21:49
加载中...