Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
35803 LYLAKIOI 【BJ】T2 C++ 运行超时 35 3000 MS 218436 KB 2277 2025-01-03 15:46:41

Tests(7/20):


#include<bits/stdc++.h> #define up(i,l,r) for(int i=(l);i<=(r);++i) #define down(i,l,r) for(int i=(l);i>=(r);--i) #define pi pair<int,int> #define p1 first #define p2 second #define m_p make_pair #define p_b push_back using namespace std; typedef long long ll; const int N=152; const int mod=1e9+7; inline ll read(){ ll x=0;short t=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')t=-1;ch=getchar();} while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar(); return x*t; } int n,p[4]; int f[N][N<<1][N<<1],g[N][N<<1][N<<1],h[N][N<<1][N<<1],s[N]; const int dx[4]={-1,1,0,0},dy[4]={0,0,1,-1}; void slv(){ n=read();up(i,0,3)p[i]=read(); f[0][N][N]=1; up(i,0,n-1){ up(j,0,i)up(k,0,i-j){ for(int s1:{-1,1})for(int s2:{-1,1}){ int J=N+s1*j,K=N+s2*k; if(j==0&&s1==1)continue; if(k==0&&s2==1)continue; up(l,0,3){ int x=J+dx[l],y=K+dy[l]; (f[i+1][x][y]+=f[i][J][K]*1ll*p[l]%mod)%=mod; } } } } up(i,0,n)up(j,0,i)up(k,0,i-j){ for(int s1:{-1,1})for(int s2:{-1,1}){ int J=N+j*s1,K=N+k*s2; if(j==0&&s1==1)continue; if(k==0&&s2==1)continue; g[i][J][K]=f[i][J][K]; up(l,0,i-1)g[i][J][K]=(g[i][J][K]+mod-g[l][J][K]*1ll*f[i-l][N][N]%mod)%mod; } } up(i,0,n){ s[i]=0; up(j,0,2*N-1)up(k,0,2*N-1)(s[i]+=g[i][j][k])%=mod; }h[0][N][N]=1; up(i,0,n)up(j,0,N)up(k,0,N){ for(int s1:{-1,1})for(int s2:{-1,1}){ int J=N+j*s1,K=N+k*s2; if(j==0&&s1==1)continue; if(k==0&&s2==1)continue; int j_=N+(-j*s1),k_=N+(-k*s2); up(l,1,n-i)(h[i+l][J][K]+=g[l][J][K]*1ll*(s[i]+mod-h[i][j_][k_])%mod)%=mod; } } int ex=0;up(i,0,n)(ex+=s[i])%=mod; int ex2=ex; up(i,0,n)up(j,0,2*N-1)up(k,0,2*N-1)if(j!=N||k!=N)(ex2+=h[i][j][k]*2%mod)%=mod; //cout<<ex<<" "<<ex2<<endl; cout<<(ex2-ex*1ll*ex%mod+mod)%mod; }int main(){ //freopen("kel.in","r",stdin); // freopen("kel.out","w",stdout); slv(); fclose(stdin); fclose(stdout); return 0; }


测评信息: