[题解] CF932E Team Work
你现在手里有\(n\)个人,你要选出若干个人来搞事情(不能不选),其中选择\(x\)个人出来的代价是\(x^k\),问所有方案的代价总和。
数据范围:\(1\le n \le 10^9,1\le k \le 5000\)
英语不好qwq...题目应该是这个意思吧
一句话题意:求
\]
哇...这东西怎么算啊...
注意到\(k\)很小,把\(i^k\)用第二类斯特林数代替一下
\]
交换求和顺序
\]
后面俩组合数...咋整?写一下
\]
后面的\(j!\)和前面抵消了,\(i!\)也消没了 Nice!
\]
注意到分母上和为\(n-j\),我们像把他搞成组合数的形式,分子分母同时乘\((n-j)!\)
\]
可以知道\(\frac{(n-j)!}{(n-i)!(i-j)!} = \binom{n-j}{n-i}\),再把第二个因子提到外面柿子变成了
\]
注意到\(k \ge 1\),\(\begin{Bmatrix}k\\0\end{Bmatrix}=0\),就可以直接对第二个\(\sum\)组合数求和,得到
\]
大力\(O(k^2)\)推第二类斯特林数,预处理下降幂就好了。
#include <bits/stdc++.h>
using namespace std;
const int P=1e9+7,N=5010;
inline int fpow(int x,int y)
{
int ret=1; for(x%=P;y;y>>=1,x=1ll*x*x%P)
if(y&1) ret=1ll*ret*x%P;
return ret;
}
inline int add(int x,int y){return (x+=y)>=P?x-P:x;}
inline int sub(int x,int y){return (x-=y)<0?x+P:x;}
int S[N][N],dwn[N],n,k;
int main()
{
scanf("%d%d",&n,&k);
dwn[0]=1; for(int i=1;i<=k;i++) dwn[i]=1ll*dwn[i-1]*(n-i+1)%P;
S[0][0]=1; for(int i=1;i<=k;i++)
for(int j=1;j<=i;j++)
S[i][j]=add(S[i-1][j-1],1ll*j*S[i-1][j]%P);
int ans=0,pw2=fpow(2,n),i2=fpow(2,P-2);
for(int j=0;j<=k;j++,pw2=1ll*pw2*i2%P)
ans=add(ans,1ll*S[k][j]*dwn[j]%P*pw2%P);
printf("%d\n",ans);
return 0;
}
[题解] CF932E Team Work的更多相关文章
- [CF932E]Team Work & [BZOJ5093]图的价值
CF题面 题意:求\(\sum_{i=0}^{n}\binom{n}{i}i^k\) \(n\le10^9,k\le5000\) 模\(10^9+7\) BZOJ题面 题意:求\(n*2^{\frac ...
- CF932E Team Work(第二类斯特林数)
题目 CF932E Team Work 前置:斯特林数\(\Longrightarrow\)点这里 做法 \[\begin{aligned}\\ &\sum\limits_{i=1}^n C_ ...
- cf932E. Team Work(第二类斯特灵数 组合数)
题意 题目链接 Sol 这篇题解写的非常详细 首先要知道第二类斯特灵数的一个性质 \[m^n = \sum_{i = 0}^m C_{n}^i S(n, i) i!\] 证明可以考虑组合意义:\(m^ ...
- CF932E Team Work——第二类斯特林数
题解 n太大,而k比较小,可以O(k^2)做 想方设法争取把有关n的循环变成O(1)的式子 考虑用公式: 来替换i^k 原始的组合数C(n,i)一项,考虑能否和后面的系数分离开来,直接变成2^n处理. ...
- CF932E Team Work(第二类斯特林数)
传送门:CF原网 洛谷 题意:给定 $n,k$,求 $\sum\limits^n_{i=1}\dbinom{n}{i}i^k\bmod(10^9+7)$. $1\le n\le 10^9,1\le k ...
- CF932E Team Work
思路 第二类斯特林数和组合数推式子的题目 题目要求\(\sum_{i=1}^n \left(\begin{matrix}n \\ i \end{matrix} \right) i^k\) 一个性质 第 ...
- 【学术篇】CF932E Team Work && bzoj5093 图的价值
两个题的传送门 对于CF这道题, 分别考虑每种可能的集合大小, 每个大小为\(k\)的集合数量有\(\binom nk\)个, 所以最后的答案就是 \[\sum_{i=0}^n\binom{n}{i} ...
- WC2019 填坑记
2019年1月8日 1.Luogu P2147 [SDOI2008]洞穴勘测 (LCT模板题&LCT学习) 2019年1月9日 2.LuoguP3203 [HNOI2010]弹飞绵羊 (LC ...
- FFT/NTT复习笔记&多项式&生成函数学习笔记Ⅱ
因为垃圾电脑太卡了就重开了一个... 前传:多项式Ⅰ u1s1 我预感还会有Ⅲ 多项式基础操作: 例题: 26. CF438E The Child and Binary Tree 感觉这题作为第一题还 ...
随机推荐
- Linux环境安装Golang
命令行安装 yum install golang 默认安装目录/usr/lib/golang/ (不同系统不一样,可通过搜索golang关键字查找: find / -name golang) 卸载 ...
- 嵊州普及Day3T1
题意:n座山,每天袭击k面,不能为同一座.问最少几天袭击所有山两面. 思路:不管如何,n,k<=10,做了就能过,考试时先想的暴力模拟,后来发现有规律,看看就好了. 见代码: #include& ...
- angularJs-服务调用与后台数据获取
可以用factory做一些后台数据的获取,例如 happyFarm.factory('seedList',['$http',function($http){ return { ge ...
- 图片转换到指定大小PDF
1.首先转换为eps jpeg2ps compile to exec file ./jpeg2ps -p a4 a.jpg -o x.eps2.从eps转换到pdf ps2pdf -dDownsa ...
- Arm-Linux 移植 Ubuntu
前言: 这篇文章介绍如何构建一个完整基于ARM的Ubuntu系统. 由于改文章当初写的时候是发表在国外产品论坛上面,故保留了原文内容. 使用到的硬件平台:Geekbox 补充说明: 虽然Geekbox ...
- P1090 危险品装箱
1090 危险品装箱 (25分) 集装箱运输货物时,我们必须特别小心,不能把不相容的货物装在一只箱子里.比如氧化剂绝对不能跟易燃液体同箱,否则很容易造成爆炸. 本题给定一张不相容物品的清单,需要你 ...
- yum出现Error downloading packages错误
yum出现Error downloading packages错误错误表现方式:yum可以list,可以clean cache,但是无法安装,错误提示: Downloading packages: E ...
- 【Winform】ProgressBar
var progressBar1 = new System.Windows.Forms.ProgressBar(); ; progressBar1.Maximum = ; progressBar1.V ...
- 洛谷P4427 [BJOI2018]求和
\(\Large\textbf{Description: } \large{一颗n个节点的树,m次询问,每次查询点i到点j的路径上所有节点点深度的k次方的和并对998244353取模(1\leq n, ...
- SpringBoot#应用启动后执行某些逻辑
// 方式1 @Component public class WhenStartupA implements InitializingBean { @Override public void afte ...