【CF961G】Partitions(第二类斯特林数)
【CF961G】Partitions(第二类斯特林数)
题面
题解
考虑每个数的贡献,显然每个数前面贡献的系数都是一样的。
枚举当前数所在的集合大小,所以前面的系数\(p\)就是:
p&=\sum_{i=1}^n{n-1\choose i-1}i\begin{Bmatrix}n-i\\k-1\end{Bmatrix}\\
&=\sum_{i=1}^n{n-1\choose i-1}i\frac{1}{(k-1)!}\sum_{j=0}^{k-1}(-1)^j{k-1\choose j} (k-1-j)^{n-i}\\
&=\sum_{i=1}^n{n-1\choose i-1}i\sum_{j=0}^{k-1}\frac{(-1)^j (k-1-j)^{n-i}}{j!(k-1-j)!}\\
&=\sum_{j=0}^{k-1}\frac{(-1)^j }{j!(k-1-j)!}\sum_{i=1}^n{n-1\choose i-1}i(k-1-j)^{n-i}\\
\end{aligned}\]
把后面一半拿出来单独算,令\(t=k-1-j\)
&\ \ \ \sum_{i=1}^n{n-1\choose i-1}it^{n-i}\\
&=\sum_{i=1}^n \frac{(n-1)!}{(i-1)!(n-i)!}it^{n-i}\\
&=\sum_{i=1}^n \frac{(n-1)!}{(i-1)!(n-i)!}(i-1+1)t^{n-i}\\
&=\sum_{i=1}^n \frac{(n-2)!}{(i-2)!(n-i)!}(n-1)t^{n-i}+\sum_{i=1}^n \frac{(n-1)!}{(i-1)!(n-i)!}t^{n-i}\\
&=(n-1)\sum_{i=1}^n {n-2\choose i-2}t^{n-i}+\sum_{i=1}^n{n-1\choose i-1}t^{n-i}\\
&=(n-1)\sum_{i=1}^n {n-2\choose n-i}t^{n-i}+\sum_{i=1}^n{n-1\choose n-i}t^{n-i}\\
&=(n-1)(t+1)^{n-2}+(t+1)^{n-1}
\end{aligned}\]
所以再带回到原式中:
p&=\sum_{j=0}^{k-1}\frac{(-1)^j }{j!(k-1-j)!}\sum_{i=1}^n{n-1\choose i-1}i(k-1-j)^{n-i}\\
&=\sum_{j=0}^{k-1}\frac{(-1)^j }{j!(k-1-j)!}((n-1)(k-j)^{n-2}+(k-j)^{n-1})\\
&=\sum_{j=0}^{k-1}\frac{(-1)^j }{j!(k-1-j)!}(n+k-j-1)(k-j)^{n-2}
\end{aligned}
\]
快速幂就完事了。
然而我在洛谷的题解里面还看到了另外一种考虑的方法:
考虑贡献中的\(|S|\sum w_i\),可以认为是划分出来的集合中,每一个点都对于当前这个点贡献一次\(w_i\)。那么考虑当前点被其它点做的贡献次数。
考虑一个点对\((i,j)\),如果\(i\neq j\),那么方案数就是两者在同一个集合中的方案数,考虑将两个点合并在一起,那么就是\(\begin{Bmatrix}n-1\\k\end{Bmatrix}\),如果\(i=j\),那么无论如何都有贡献,也就是\(\begin{Bmatrix}n\\k\end{Bmatrix}\)。所以,可以得到:
\]
第二类斯特林数直接用容斥展开式计算即可,复杂度不变。
代码是第一种方法的。
#include<iostream>
#include<cstdio>
using namespace std;
#define MAX 200200
#define MOD 1000000007
void add(int &x,int y){x+=y;if(x>=MOD)x-=MOD;}
int fpow(int a,int b)
{
int s=1;if(b<0)return 1;
while(b){if(b&1)s=1ll*s*a%MOD;a=1ll*a*a%MOD;b>>=1;}
return s;
}
int n,K,ans,p;
int jc[MAX],jv[MAX],inv[MAX];
int main()
{
scanf("%d%d",&n,&K);
for(int i=1,x;i<=n;++i)scanf("%d",&x),add(ans,x);
inv[0]=inv[1]=jc[0]=jv[0]=1;
for(int i=1;i<=K;++i)jc[i]=1ll*jc[i-1]*i%MOD;
for(int i=2;i<=K;++i)inv[i]=1ll*inv[MOD%i]*(MOD-MOD/i)%MOD;
for(int i=1;i<=K;++i)jv[i]=1ll*jv[i-1]*inv[i]%MOD;
for(int i=0,d=1;i<K;++i,d=MOD-d)
add(p,1ll*d*jv[i]%MOD*jv[K-1-i]%MOD*(n+K-i-1)%MOD*fpow(K-i,n-2)%MOD);
ans=1ll*ans*p%MOD;
printf("%d\n",ans);
return 0;
}
【CF961G】Partitions(第二类斯特林数)的更多相关文章
- CF961G Partitions(第二类斯特林数)
题目 CF961G 前置 斯特林数\(\Longrightarrow\)斯特林数及反演总结 做法 相信大家能得出一个一眼式:\[Ans=\sum\limits_{i=1}^n w_i\sum\limi ...
- 【CF961G】Partitions 第二类斯特林数
[CF961G]Partitions 题意:给出n个物品,每个物品有一个权值$w_i$,定义一个集合$S$的权值为$W(S)=|S|\sum\limits_{x\in S} w_x$,定义一个划分的权 ...
- CF961G Partitions(第二类斯特林数)
传送门 对于每一个元素,我们只要能求出它的出现次数\(sum\),那么每个元素的贡献都是一样的,最终的答案为\(sum\times \sum_{i=1}^n w_i\) 那么分别讨论 如果这个元素自己 ...
- 【cf961G】G. Partitions(组合意义+第二类斯特林数)
传送门 题意: 给出\(n\)个元素,每个元素有价值\(w_i\).现在要对这\(n\)个元素进行划分,共划分为\(k\)组.每一组的价值为\(|S|\sum_{i=0}^{|S|}w_i\). 最后 ...
- 【BZOJ5093】图的价值(第二类斯特林数,组合数学,NTT)
[BZOJ5093]图的价值(第二类斯特林数,组合数学,NTT) 题面 BZOJ 题解 单独考虑每一个点的贡献: 因为不知道它连了几条边,所以枚举一下 \[\sum_{i=0}^{n-1}C_{n-1 ...
- 【BZOJ4555】求和(第二类斯特林数,组合数学,NTT)
[BZOJ4555]求和(第二类斯特林数,组合数学,NTT) 题面 BZOJ 题解 推推柿子 \[\sum_{i=0}^n\sum_{j=0}^iS(i,j)·j!·2^j\] \[=\sum_{i= ...
- 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 ...
- HDU - 4625 JZPTREE(第二类斯特林数+树DP)
https://vjudge.net/problem/HDU-4625 题意 给出一颗树,边权为1,对于每个结点u,求sigma(dist(u,v)^k). 分析 贴个官方题解 n^k并不好转移,于是 ...
- 【CF932E】Team Work(第二类斯特林数)
[CF932E]Team Work(第二类斯特林数) 题面 洛谷 CF 求\(\sum_{i=1}^nC_{n}^i*i^k\) 题解 寒假的时候被带飞,这题被带着写了一遍.事实上并不难,我们来颓柿子 ...
随机推荐
- Ionic App ActionSheet布局问题
使用 $ionicActionSheet的时候界面不像Ihpnoe手机那样显示的整齐,但是在电脑浏览器里面却是好的,原因还是Ionic自带css的问题,网上的答案是ionic.min.css/ioni ...
- Android自动化测试之Monkeyrunner使用方法及实例
目前Android SDK里自带的现成的测试工具有monkey 和 monkeyrunner两个.大家别看这俩兄弟名字相像,但其实是完完全全不同的两个工具,应用在不同的测试领域.总的来说,monkey ...
- layer.conifrm 非阻塞执行 ztree删除节点 问题
layer.confirm无法阻塞js执行,导致ztree插件的beforeRemove回调函数未等待用户确定删除便已经移除界面中的节点, 因此可能会出现前后台数据不一致情况,正常逻辑理应删除后台数据 ...
- Mysqldump备份说明及数据库备份脚本分享-运维笔记
MySQLdump是MySQL自带的导出数据工具,即mysql数据库中备份工具,用于将MySQL服务器中的数据库以标准的sql语言的方式导出,并保存到文件中.Mysqldump是一个客户端逻辑备份的工 ...
- 系统重启后DNS地址默认修改修改引起的一次事故(Tomcat报错:java.net.UnknownHostException)
事故描述:公司的一个内部业务系统由于程序bug,导致系统崩溃,需要强制重启服务器.系统重启后,赶紧将业务程序启动.随后发现/etc/resolv.conf文件的DNS地址被修改成了默认地址.发现之后, ...
- hdu 1263 水果 结构的排序+sort自定义排序
水果 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...
- 《Linux内核分析》第13章
<Linux内核设计与实现>第十三章--虚拟文件系统概述 20135211 一.通用文件系统接口 之所以可以使用这种通用接口(VF)对所有类型的文件系统进行操作,是因为内核在它的底层文件系 ...
- Junit测试用例
一.题目简介 返回一个给定整数参数的绝对值. 二.源码的github链接 https://github.com/liyan941016/test/blob/master/FileTest.java h ...
- [福大软工] Z班——Beta现场答辩反馈
Beta现场答辩 互评反馈 各组对于 麻瓜制造者 的评价与建议 队伍名 评价与建议 *** 功能继续完善,二手市场有闲鱼这条大鱼,要继续体现区域性的优势 *** web端的UI很好看,但安卓和web相 ...
- Eclipse版本列表
https://wiki.eclipse.org/Older_Versions_Of_Eclipse http://blog.csdn.net/jaycee110905/article/details ...