其他分享
首页 > 其他分享> > aaa

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