
正文
ZOJ4114 Flipping Game(2019山东省赛)
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
有n个开关,有起始状态和终状态,问如果每次必须选m个开关进行改变状态,一共进行k次,那么有多少种方式可以从起始状态到终状态~
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
;
;
ll dp[maxn][maxn];
ll c[maxn][maxn];//组合数
char s1[maxn];
char s2[maxn];
int main () {
;i<maxn;i++) c[i][]=;
;i<maxn;i++) c[i][i]=;
;i<maxn;i++) {
;j<i;j++) {
c[i][j]=(c[i-][j-]+c[i-][j])%mod;
}
}
int t,n,k,m;
scanf ("%d",&t);
while (t--) {
scanf ("%d %d %d %s %s",&n,&k,&m,s1,s2);
;
;i<n;i++) if (s1[i]!=s2[i]) num++;
memset (dp,,sizeof(dp));
dp[][num]=;
;i<k;i++) {
;j<=n;j++) {
;k<=m;k++) {
if (j>=k&&n-j>=m-k) {
dp[i+][j-k+m-k]+=dp[i][j]*c[j][k]%mod*c[n-j][m-k]%mod;
dp[i+][j-k+m-k]%=mod;
}
}
}
}
printf (]);
}
;
}







