记录编号 613939 评测结果 WWWWTTTTTT
题目名称 4371.大括号 最终得分 0
用户昵称 RpUtl 是否通过 未通过
代码语言 C++ 运行时间 7.313 s
提交时间 2026-04-02 20:15:20 内存使用 6.10 MiB
显示代码纯文本
#include <iostream>
#include <cstdio>
using namespace std;
const int mod=666623333;
const int N=5005;
typedef long long ll;
int n,a,b;
ll p,q,pwL[N],pwR[N],f[N][N],g[N][N],invL,invR,ans;
char s[N];
ll ksm(ll a,ll b){
	ll ans=1;
	while(b){
		if(b&1)ans=(ans*a)%mod;
		a=(a*a)%mod;
		b>>=1;
	}
	return ans;
}
/*
f[i][x] f[i][x-1] 1
f[i][x] f[i][x+y] ((q)/(p+q))^y*(p/(p+q))
*/
int main(){
	freopen("brace.in","r",stdin);
	freopen("brace.out","w",stdout);
	scanf("%d %d %d %d %d",&n,&p,&q,&a,&b);
	scanf("%s",s+1);
	invL=p*ksm(p+q,mod-2)%mod;pwL[0]=1;
	invR=q*ksm(p+q,mod-2)%mod;pwR[0]=1;
	for(int i=1;i<=n;i++){
		pwL[i]=pwL[i-1]*invL%mod;
		pwR[i]=pwR[i-1]*invR%mod;
	}
	f[0][a]=1;
	for(int i=0;i<n;i++){
		if(s[i+1]=='R'){
			for(int j=0;j<=n;j++){
				for(int k=0;k<=n-j;k++){
					f[i+1][j+k]+=pwR[k]*f[i][j]%mod*invL%mod;
					f[i+1][j+k]%=mod;
				}
			}
		}else{
			for(int j=1;j<=n;j++){
				f[i+1][j-1]+=f[i][j];
				f[i+1][j-1]%=mod;
			}
		}
	}
	g[n+1][b]=1;
	for(int i=n+1;i>1;i--){
		if(s[i-1]=='L'){
			for(int j=0;j<=n;j++){
				for(int k=0;k<=n-j;k++){
					g[i-1][j+k]+=pwL[k]*g[i][j]%mod*invR%mod;
					g[i-1][j+k]%=mod;
				}
			}
		}else{
			for(int j=1;j<=n;j++){
				g[i-1][j-1]+=g[i][j];
				g[i-1][j-1]%=mod;
			}
		}
	}
	for(int i=1;i<n;i++){
		if(s[i]=='L'&&s[i+1]=='R'){
			ans+=f[i][0]*g[i+1][0]%mod;
			ans%=mod;
		}
	}
	printf("%lld\n",ans);
}