Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
33790 liuyile 【S】T2 C++ 通过 100 234 MS 63840 KB 2726 2024-10-22 15:25:38

Tests(10/10):


//100 #include<bits/stdc++.h> using namespace std; #define int long long #define pii pair<int,int> int f[2][2010][2010]; int s[2010]; int l[510],r[510]; int len[2510]; int n,m; int L[2010],R[2010]; int g[2010][510]; const int M=998244353; 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);} inline int dnfac(int n,int m){ int res=1; for(int i=n;i>n-m;i--) res=res*i%M; return res; } inline int C(int n,int m){ return dnfac(n,m)*inv(dnfac(m,m))%M; } inline int calc(int n,int m){ return C(m+n-1,n-1); } 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("genshin.in","r",stdin); // freopen("genshin.out","w",stdout); cin>>n; // n=100; vector<int>T; set<int>S; for(int i=1;i<=n;i++) cin>>l[i]>>r[i],T.push_back(l[i]-1),T.push_back(r[i]); sort(T.begin(),T.end()); int lst=0; for(int x:T) if(x!=lst){ if(x>lst+1){ L[++m]=lst+1; R[m]=x-1; } L[++m]=x,R[m]=x; lst=x; }// ediot. for(int i=1;i<=m;i++){ g[0][i]=1; int x=R[i]-L[i]+1; // g[1][i]=x; for(int j=1;j<=n;j++) g[j][i]=g[j-1][i]*(x+j-1)%M*inv(j)%M; } // cout<<g[3][1]<<endl; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++) if(l[i]==L[j]){ l[i]=j; break; } for(int j=1;j<=m;j++) if(r[i]==R[j]){ r[i]=j; // cout<<i<<"x"<<j<<endl; break; } // cout<<l[i]<<" "<<r[i]<<endl; } // cout<<l[1]<<" "<<r[1]<<endl; // return 0; int fl=0; for(int i=l[1];i<=r[1];i++) f[0][1][i]=1; for(int i=2;i<=n;i++){ fl^=1; memset(f[fl],0,sizeof(f[fl]));// qingkong // for(int j=1;j<=i;j++) // for(int k=l[i];k<=r[i];k++) // f[fl][j][k]=0; for(int j=1;j<=i;j++) for(int k=l[i-1];k<=r[i-1];k++){ if(k) add(f[fl][1][k-1],f[!fl][j][k]*g[j][k]%M); add(f[fl][j+1][k],f[!fl][j][k]); } for(int k=m;k>=1;k--) add(f[fl][1][k],f[fl][1][k+1]); } int res=0; for(int j=1;j<=n;j++) for(int k=l[n];k<=r[n];k++) add(res,f[fl][j][k]*g[j][k]%M); cout<<res<<endl; cout.flush(); return 0; }


测评信息: