Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
35805 liuyile 【BJ】T2 C++ 解答错误 0 3000 MS 455400 KB 2595 2025-01-03 15:55:21

Tests(0/20):


#include <bits/stdc++.h> using namespace std; #define int long long int n; const int s=160; int pr[4],pw[4][210]; int fac[210],iv[210]; int g[160][320][320]; int h[160][320][320]; int f[160][320][320]; const int M=1e9+7; inline int qp(int a,int x){ int res=1; while(x){ if(x&1)res=res*a%M; a=a*a%M; x>>=1; } return res; } inline int inv(int x){return qp(x,M-2);} int p[151]; inline void add(int &x,int y){ if((x+=y)>=M)x-=M; } signed main(){ ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); // freopen("SS.in","r",stdin); // freopen("SS.out","w",stdout); cin>>n; for(int i=0;i<4;i++){ cin>>pr[i]; pw[i][0]=1; for(int j=1;j<=n;j++) pw[i][j]=pw[i][j-1]*pr[i]%M; } fac[0]=iv[0]=1; for(int i=1;i<=n;i++) fac[i]=fac[i-1]*i%M,iv[i]=inv(fac[i]); g[0][s][s]=1; for(int a=0;a<=n;a++) for(int b=0;a+b<=n;b++) for(int c=0;a+b+c<=n;c++) for(int d=0;a+b+c+d<=n;d++) add(g[a+b+c+d][s+a-c][s+b-d],fac[a+b+c+d]*pw[0][a]%M*pw[1][b]%M*pw[2][c]%M*pw[3][d]%M*iv[a]%M*iv[b]%M*iv[c]%M*iv[d]%M); // cout<<g[2][0][0]<<endl; int E=1; p[0]=1; for(int i=1;i<=n;i++){ p[i]=1; for(int j=0;j<i;j++) add(p[i],M-p[j]*g[i-j][s][s]%M); add(E,p[i]); } for(int i=0;i<=n;i++) for(int x=-i;x<=i;x++) for(int y=abs(x)-i;y<=i-abs(x);y++){ h[i][s+x][s+y]=g[i][s+x][s+y]; for(int j=0;j<i;j++) add(h[i][s+x][s+y],M-h[j][s+x][s+y]*g[i-j][s][s]%M); // cout<<i<<" "<<x<<" "<<y<<" "<<g[i][s+x][s+y]<<" "<<h[i][s+x][s+y]<<endl; } // cout<<endl; for(int i=0;i<n;i++) for(int x=-(n-i);x<=(n-i);x++) for(int y=abs(x)-(n-i);y<=(n-i)-abs(x);y++) for(int j=0;i+j<=n;j++) { add(f[i+j][s-x][s-y],(p[i]-f[i][s+x][s+y]+M)*h[j][s+x][s+y]%M); // cout<<i<<" "<<j<<" "<<x<<" "<<y<<" "<<(p[i]-f[i][s+x][s+y]+M)<<" "<<h[j][s+x][s+y]<<endl; } int E2=0; for(int i=0;i<=n;i++) for(int x=-i;x<=i;x++) for(int y=abs(x)-i;y<=abs(x)+i;y++) if(x!=0&&y!=0){ add(E2,f[i][s+x][s+y]); // cout<<i<<" "<<x<<" "<<y<<" "<<f[i][s+x][s+y]<<endl; } // cout<<E2<<endl; E2=(E2*2+E)%M; cout<<(E2-E*E%M+M)%M<<endl; return 0; } /* */


测评信息: