zoukankan      html  css  js  c++  java
  • [CF932E]Team Work

    https://www.zybuluo.com/ysner/note/1287143

    题面

    (sum_{i=1}^nC(n,i)*i^k)

    • (nleq10^9,kleq5000)

    解析

    很显然能看出式子的现实意义:从(n)个箱子中选出(i)个,然后再在这(i)个箱子中任意放入(k)个球。
    这样箱子有区别,球也有区别。

    注意到(k)(n)小了一个级别。考虑从球的角度下手。
    (k)个球最多只能放入(k)个箱子,除此以外就是很多空箱。
    因此,我们可以枚举球总共放入多少个箱子(不允许空箱),然后其它箱子是选与不选皆可。
    设当前放入(i)个箱子,则方案数为((P)表示排列数)

    [S(k,i)*P(n,i)*2^{n-i} ]

    综上,最后答案为

    [sum_{i=1}^kS(k,i)*frac{n!}{(n-i)!}*2^{n-i} ]

    复杂度(O(k^2))
    注意(n<k)的情况。

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #define ll long long
    #define re register
    #define il inline
    #define db double
    #define fp(i,a,b) for(re int i=a;i<=b;i++)
    #define fq(i,a,b) for(re int i=a;i>=b;i--)
    using namespace std;
    const int mod=1e9+7,N=5005;
    int n,k,S[5005][5005];
    ll ans;
    il int gi()
    {
      re int x=0,t=1;
      re char ch=getchar();
      while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar();
      if(ch=='-') t=-1,ch=getchar();
      while(ch>='0'&&ch<='9') x=x*10+ch-48,ch=getchar();
      return x*t;
    }
    il void Pre()
    {
      S[0][0]=1;
      fp(i,1,k)
          fp(j,1,i) S[i][j]=(S[i-1][j-1]+1ll*j*S[i-1][j]%mod)%mod;
    }
    il ll ksm(re ll S,re ll n)
    {
      re ll T=S;S=1;
      while(n)
        {
          if(n&1) S=S*T%mod;
          T=T*T%mod;
          n>>=1;
        }
      return S;
    }
    il ll jc(re int l,re int r)
    {
      re ll res=1;
      fp(i,l,r) (res*=i)%=mod;
      return res;
    }
    int main()
    {
      n=gi();k=gi();
      Pre();
      fp(i,1,min(k,n))
          (ans+=1ll*S[k][i]*jc(n-i+1,n)%mod*ksm(2,n-i)%mod)%=mod;
      printf("%lld
    ",ans);
      return 0;
    }
    
  • 相关阅读:
    面试题-代码
    面试题-数仓
    烂大街的NginxRedisMqDb架构.md
    Ansible-B站.md
    openstack.md
    rabbitMQ.md
    大数据仓库实战项目-电商数仓3.0版.md
    linux分析工具之top命令详解
    小程序开发中 在 wxml格式化 属性断行
    redhat 7.2更新yum源时踩的坑
  • 原文地址:https://www.cnblogs.com/yanshannan/p/9673774.html
Copyright © 2011-2022 走看看