aaa
作者:互联网
1 #include<cstdio> 2 #include<algorithm> 3 using namespace std; 4 const int maxn=3000+10,mod=998244353,inf=0x3f3f3f3f; 5 typedef long long ll; 6 int l[maxn],r[maxn],ls[maxn],rs[maxn],ine[maxn],ive[maxn],fac[maxn]; 7 int dp[maxn][maxn]; 8 void Init(){ 9 ine[1]=1; 10 for(int i=2;i<=3000;i++) ine[i]=(ll)(mod-mod/i)*ine[mod%i]%mod; 11 fac[1]=1; 12 for(int i=2;i<=3000;i++) fac[i]=(ll)fac[i-1]*ine[i]%mod; 13 //for(int i=1;i<=3000;i++) printf("%d ",fac[i]); 14 ive[1]=1; 15 for(int i=2;i<=3000;i++) ive[i]=(ll)ive[i-1]*i%mod; 16 } 17 int com(int n,int m){ 18 return (ll)ive[m]*fac[n]%mod; 19 } 20 int main(){ 21 int n,m; 22 scanf("%d%d",&n,&m); 23 Init(); 24 int ml=inf; 25 for(int i=1;i<=n;i++){ 26 int L,R; 27 scanf("%d%d",&L,&R); 28 ml=min(ml,L); 29 l[L]++; 30 r[R]++; 31 } 32 for(int i=1;i<=m;i++){ 33 ls[i]=ls[i-1]+l[i]; 34 rs[i]=rs[i-1]+r[i]; 35 } 36 dp[0][0]=1; 37 for(int i=1;i<=m;i++){ 38 for(int j=0;j<=n;j++){ 39 dp[i][j]=(dp[i-1][j]+dp[i-1][j-1]*(rs[i]-j+1)%mod)%mod; 40 if(l[i]) dp[i][j]=(ll)dp[i][j]*com(l[i],i-j-ls[i-1])%mod; 41 } 42 } 43 //printf("%d ",dp[2][0]); 44 printf("%d\n",dp[m][n]); 45 return 0; 46 }View Code
标签:10,aaa,int,long,maxn,ine,include 来源: https://www.cnblogs.com/HZOIDJ123/p/13647541.html