求调
查看原帖
求调
1272630
Norton_brief楼主2025/1/16 15:32

一直爆零

#include<bits/stdc++.h>
using namespace std;
char a[1010],b[210];int n,m,k,mod=1000000007;
int f[2][210][210][2],bb[1010];
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){cin>>a[i];}
	for(int i=1;i<=m;i++){
		cin>>b[i];
	}
	for(int i=1;i<=n;i++){
		if(a[i]==b[1]){
			bb[i]=bb[i-1]+1;
		}
		else{
			bb[i]=bb[i-1];
		}
	}
	f[0][1][1][1]=f[1][1][1][1]=1;
	for(int i=1;i<=n;i++){
		if(a[i]==b[1]){
			f[1][1][1][0]=b[i-1];
			f[1][1][1][1]=1;
		}
		else{
			f[1][1][1][1]=0;
			f[1][1][1][0]=b[i-1];
		}
		for(int j=1;j<=m;j++){
			for(int l=1;l<=min(k,j);l++){
				if(a[i]!=b[i]){
					f[1][j][l][1]=0;f[1][j][l][0]=(f[0][j][l][0]+f[0][j][l][1])%mod;
				}
				else{
					f[1][j][l][0]=(f[0][j][l][0]+f[0][j][l][1])%mod;
					f[1][j][l][1]=(f[0][j-1][l-1][1]+f[0][j-1][l-1][0]+f[0][j-1][l-1][1])%mod;
				}
			}
		}
		for(int cntj=1;cntj<=m;cntj++){
			for(int cntl=1;cntl<=min(k,cntj);cntl++){
				for(int w=0;w<=1;w++){
					f[0][cntj][cntl][w]=f[1][cntj][cntl][w];
				}
			}
		}
	}
	cout<<(f[1][m][k][1]+f[1][m][k][0])%mod;
	return 0;
	
	
	
	
} 
2025/1/16 15:32
加载中...