题目链接

戳我

题意

有\(n\)个箱子,从中选出\(i\)个箱子,然后把\(k\)个不同的球装在这\(i\)个箱子中,求方案数。

实际上这题就是求:

\[\sum_{i=1}^nc_n^i*i^k
\]

不知道为什么翻译直接把这个写出来了,莫名其妙。

直接求这个式子肯定不行,\(n\)很大会超时,所以我们应该化简式子

\[\sum_{i=1}^nc_n^i*i^k
\]

\[=\sum_{i=0}^nc_n^i*i^k
\]

根据第二类斯特林数的性质:

\[n^k=\sum_{i=0}^nS(k,i)*i!*C(n,i)
\]

所以式子可以继续化简:

\[=\sum_{i=0}^nc_n^i*\sum_{j=0}^kS(k,j)*j!*C(i,j)
\]

\[=\sum_{i=0}^nc_n^i*\sum_{j=0}^kS(k,j)*j!*\frac{i!}{j!*(i-j)!}
\]

\[=\sum_{i=0}^nc_n^i*\sum_{j=0}^kS(k,j)*\frac{i!}{(i-j)!}
\]

\[=\sum_{i=0}^n\frac{n!}{i!(n-i)!}*\sum_{j=0}^kS(k,j)*\frac{i!}{(i-j)!}
\]

\[=\sum_{i=0}^n\sum_{j=0}^kS(k,j)*\frac{i!}{(i-j)!}*\frac{n!}{i!(n-i)!}
\]

\[=\sum_{i=0}^n\sum_{j=0}^kS(k,j)*\frac{n!}{(i-j)!*(n-i)!}
\]

\[=\sum_{j=0}^kS(k,j)\sum_{i=0}^n\frac{(n-j)!}{(i-j)!*(n-i)!}*\frac{n!}{(n-j)!}
\]

\[=\sum_{j=0}^kS(k,j)\sum_{i=0}^nC(n-j,n-i)*\frac{n!}{(n-j)!}
\]

\[=\sum_{j=0}^kS(k,j)*\frac{n!}{(n-j)!}\sum_{i=0}^nC(n-j,n-i)
\]

\[=\sum_{j=0}^kS(k,j)*\frac{n!}{(n-j)!}*2^{n-j}
\]

所以这就可以直接做了

code

#include<cstdio>
#define rg register
#define file(x) freopen(x".in","r",stdin);freopen(x".out","w",stdout);
using namespace std;
typedef long long ll;
const int mod=1e9+7;
inline int read(){
int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9') f=(c=='-')?-1:1,c=getchar();
while(c>='0'&&c<='9') x=x*10+c-48,c=getchar();
return f*x;
}
ll s[5011][5011];
int n,k;
inline void init(){
s[0][0]=1;
for(rg int i=1;i<=k;i++)
for(rg int j=1;j<=i;j++)
s[i][j]=(s[i-1][j-1]+j*s[i-1][j])%mod;
}
inline ll ksm(int b){
ll ans=1,a=2;
while(b){
if(b&1)
ans=ans*a%mod;
a=a*a%mod;
b>>=1;
}
return ans%mod;
}
main(){
n=read(),k=read();
init();
ll p=ksm(n),ans=0,js=1,inv=ksm(mod-2);
for(rg int i=0;i<=k;i++){
ans+=s[k][i]*p%mod*js,p*=inv,p%=mod;
ans%=mod;
js=js*(n-i)%mod;
}
printf("%lld",ans);
return 0;
}

「CF932E」 Team Work的更多相关文章

  1. 「译」JUnit 5 系列:条件测试

    原文地址:http://blog.codefx.org/libraries/junit-5-conditions/ 原文日期:08, May, 2016 译文首发:Linesh 的博客:「译」JUni ...

  2. 「译」JUnit 5 系列:扩展模型(Extension Model)

    原文地址:http://blog.codefx.org/design/architecture/junit-5-extension-model/ 原文日期:11, Apr, 2016 译文首发:Lin ...

  3. JavaScript OOP 之「创建对象」

    工厂模式 工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了创建具体对象的过程.工厂模式虽然解决了创建多个相似对象的问题,但却没有解决对象识别的问题. function createPers ...

  4. 「C++」理解智能指针

    维基百科上面对于「智能指针」是这样描述的: 智能指针(英语:Smart pointer)是一种抽象的数据类型.在程序设计中,它通常是经由类型模板(class template)来实做,借由模板(tem ...

  5. 「JavaScript」四种跨域方式详解

    超详细并且带 Demo 的 JavaScript 跨域指南来了! 本文基于你了解 JavaScript 的同源策略,并且了解使用跨域跨域的理由. 1. JSONP 首先要介绍的跨域方法必然是 JSON ...

  6. 「2014-5-31」Z-Stack - Modification of Zigbee Device Object for better network access management

    写一份赏心悦目的工程文档,是很困难的事情.若想写得完善,不仅得用对工具(use the right tools),注重文笔,还得投入大把时间,真心是一件难度颇高的事情.但,若是真写好了,也是善莫大焉: ...

  7. 「2014-3-18」multi-pattern string match using aho-corasick

    我是擅(倾)长(向)把一篇文章写成杂文的.毕竟,写博客记录生活点滴,比不得发 paper,要求字斟句酌八股结构到位:风格偏杂文一点,也是没人拒稿的.这么说来,arxiv 就好比是 paper 世界的博 ...

  8. 「2014-3-17」C pointer again …

    记录一个比较基础的东东-- C 语言的指针,一直让人又爱又恨,爱它的人觉得它既灵活又强大,恨它的人觉得它太过于灵活太过于强大以至于容易将人绕晕.最早接触 C 语言,还是在刚进入大学的时候,算起来有好些 ...

  9. 「2014-3-13」Javascript Engine, Java VM, Python interpreter, PyPy – a glance

    提要: url anchor (ajax) => javascript engine (1~4 articles) => java VM vs. python interpreter =& ...

随机推荐

  1. 杂项:UN-HTML

    ylbtech-杂项:HTML 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部     6.返回顶部   7.返回顶部   8.返回顶部   9.返回顶部   1 ...

  2. php代码中临时开启错误调试

    对php.ini 中参数的设置 也可用在php代码中完成. 调用:调用ini_set()函数 //开启php.ini中的display_errors指令 ini_set('display_errors ...

  3. linux lcd设备驱动剖析三

    上一节文章中详细地剖析了probe函数,但是从始至终都没有看到打开读写文件接口的操作函数,只看到了下面这个操作结构体 [cpp] view plain? static struct fb_ops s3 ...

  4. JavaScript之BON

    1.windows对象 全局作用域: 2.窗口关系及框架 如果页面包含框架,则每个框架都有自己的window对象,并且保存在iframes集合中,在iframe集合中,可以通过数值索引(从0开始,从左 ...

  5. 2017年排名前15的数据科学python库

    2017年排名前15的数据科学python库 2017-05-22 Python程序员 Python程序员 Python程序员 微信号 pythonbuluo 功能介绍 最专业的Python社区,有每 ...

  6. 搭建Easyui环境在Myeclipse或Eclipse中

    转自:https://www.cnblogs.com/henuyuxiang/p/4283018.html 1.下载Easyui.网址:http://www.jeasyui.com/download/ ...

  7. Spring Data系列之Jpa(一)

    1.Spring Data的由来 Spring Data是SpringSource基金会创下的一个简化数据库访问.支持云服务的开源框架.其主要目的是让数据库访问变的方便快捷,可以用Spring Dat ...

  8. Mybatis简化sql书写,别名的使用

    之前,我们在sql映射xml文件中的引用实体类时,需要写上实体类的全类名(包名+类名),如下: <!-- 创建用户(Create) --> <insert id="addU ...

  9. 启动dhcp出错:No subnet declaration for eth0 (192.168.0.1

    XUbuntu 8.04 i386.装了dhcp3-server.使用 sudo /etc/init.d/dhcp3-server start 出错:Apr 30 14:24:03 s dhcpd: ...

  10. 1-如何自己在eclipse上配置Andriod环境

    转载:http://blog.csdn.net/dr_neo/article/details/49870587 最新鲜最详细的Android SDK下载安装及配置教程 2015年11月16日 19:2 ...