https://blog.csdn.net/qq_33229466/article/details/75042895

https://www.cnblogs.com/gzy-cjoier/p/8426987.html

http://www.cnblogs.com/zhouzhendong/p/Stirling-Number.html

题解:

这个东西挺容易忘的。。

第一类斯特林数

定义:n个不同小球排成m个循环排列(不同排列交换顺序是相同的)的方案数(每个都不为空)

暴力算的代码:

 

  for (int i=1;i<=n;++i)
    for (int j=1;j<=m;++j)
      for (register int k=1;k<=i;++k)
        f[i][j]=(f[i][j]+f[i-k][j-1]*inv[k])%mod;

 

答案是$\frac{f[n][m]*n!}{m!}$

原理就是将求出来的方案数除以每个块的元素个数(圆排列的性质)

 

考虑用组合意义来计算

用$S(n,m)$表示第一类斯特林数,我们去考虑最后一个放进去的元素,要么新开一个排列,要么加入之前的排列,所以

$$S(n,m)=(n-1)*S(n-1,m)+S(n-1,m-1)$$

 

#include <bits/stdc++.h>
using namespace std;
#define rint register int
#define IL inline
#define rep(i,h,t) for(int i=h;i<=t;i++)
#define dep(i,t,h) for(int i=t;i>=h;i--)
#define ll long long
#define me(x) memset(x,0,sizeof(x))
#define mep(x,y) memcpy(x,y,sizeof(y))
#define mid ((h+t)>>1)
namespace IO{
    char ss[1<<24],*A=ss,*B=ss;
    IL char gc()
    {
        return A==B&&(B=(A=ss)+fread(ss,1,1<<24,stdin),A==B)?EOF:*A++;
    }
    template<class T> void read(T &x)
    {
        rint f=1,c; while (c=gc(),c<48||c>57) if (c=='-') f=-1; x=(c^48);
        while (c=gc(),c>47&&c<58) x=(x<<3)+(x<<1)+(c^48); x*=f; 
    }
    char sr[1<<24],z[20]; ll Z,C1=-1;
    template<class T>void wer(T x)
    {
        if (x<0) sr[++C1]='-',x=-x;
        while (z[++Z]=x%10+48,x/=10);
        while (sr[++C1]=z[Z],--Z);
    }
    IL void wer1()
    {
        sr[++C1]=' ';
    }
    IL void wer2()
    {
        sr[++C1]='\n';
    }
    template<class T>IL void maxa(T &x,T y) {if (x<y) x=y;}
    template<class T>IL void mina(T &x,T y) {if (x>y) x=y;} 
    template<class T>IL T MAX(T x,T y){return x>y?x:y;}
    template<class T>IL T MIN(T x,T y){return x<y?x:y;}
};
using namespace IO;
int f[100][100],n,m;
const int mo=998244353;
int main()
{
    freopen("1.in","r",stdin);
    freopen("2.out","w",stdout);
    read(n); read(m);
    f[0][0]=1;
    rep(i,1,90)
      rep(j,1,90)
        f[i][j]=(f[i-1][j-1]+1ll*(i-1)*f[i-1][j])%mo;
    cout<<f[n][m]<<endl;
    return 0;
}
View Code

相关文章:

猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-07
  • 2021-08-29
  • 2022-12-23
  • 2021-04-16
相关资源
相似解决方案