luogu CF932E Team Work |斯特林数

一句话: 求 \(\sum^{n}_{i=1}{C(n,i)*i^k}\)


题解

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
#define ll long long
const int mod=1e9+7,_=5e3+10;
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[_][_];
int n,k;
inline void init(){
    n=read(),k=read();
    s[0][0]=1;
    for(int i=1;i<=k;i++)
    for(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;
}
signed main(){
    init();
    ll p=ksm(n),ans=0,js=1,inv=500000004;
    for(int i=0;i<=k;i++){
        ans=(s[k][i]*p%mod*js+ans)%mod;
        p=(p*inv)%mod;
        js=js*(n-i)%mod;
    }
    printf("%lld\n",ans);
}

原文地址:https://www.cnblogs.com/naruto-mzx/p/12180898.html

时间: 2024-10-08 18:36:49

luogu CF932E Team Work |斯特林数的相关文章

【cf932E】E. Team Work(第二类斯特林数)

传送门 题意: 求\(\displaystyle \sum_{i=0}^n{n\choose i}i^k,n\leq 10^9,k\leq 5000\). 思路: 将\(i^k\)用第二类斯特林数展开,推导方式如:传送门. 但这个题要简单一些,不用\(NTT\)预处理,直接递推就行. 详见代码: /* * Author: heyuhhh * Created Time: 2019/12/12 10:42:37 */ #include <iostream> #include <algorit

[CF932E]Team Work &amp; [BZOJ5093]图的价值

CF题面 题意:求\(\sum_{i=0}^{n}\binom{n}{i}i^k\) \(n\le10^9,k\le5000\) 模\(10^9+7\) BZOJ题面 题意:求\(n*2^{\frac{n(n-1))}{2}-(n-1)}*\sum_{i=0}^{n-1}\binom{n-1}{i}i^k\) \(n\le10^9,k\le2*10^5\) 模\(998244353\) 第二类斯特林数 赶紧去学第二类斯特林数啊 第二类斯特林数:\(S(n,m)\),表示把\(n\)个不同的的球放

学习总结:斯特林数( Stirling number )

基本定义 第一类斯特林数:$1 \dots n$的排列中恰好有$k$个环的个数:或是,$n$元置换可分解为$k$个独立的轮换的个数.记作 $$ \begin{bmatrix} n \\ k \end{bmatrix}. $$ 第二类斯特林数:将$n$个元素分成$k$个非空集合的方案数.记作 $$ \begin{Bmatrix} n \\ k \end{Bmatrix}. $$ 根据定义,我们有 $$ \sum_{k=0}^n \begin{bmatrix} n \\ k \end{bmatrix

HDU3625(SummerTrainingDay05-N 第一类斯特林数)

Examining the Rooms Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1661    Accepted Submission(s): 1015 Problem Description A murder happened in the hotel. As the best detective in the town, yo

Gym 101147G 第二类斯特林数

大致题意: n个孩子,k场比赛,每个孩子至少参加一场比赛,且每场比赛只能由一个孩子参加.问有多少种分配方式. 分析: k>n,就无法分配了. k<=n.把n分成k堆的方案数乘以n的阶乘.N分成k堆得方案数即第二类斯特林数 http://blog.csdn.net/acdreamers/article/details/8521134 #include <bits/stdc++.h> using namespace std; typedef long long ll; const ll

hdu 4041 2011北京赛区网络赛F 组合数+斯特林数 ***

插板法基础知识 斯特林数见百科 1 #include<iostream> 2 #include<cmath> 3 #include<cstdio> 4 #include<cstring> 5 #define LL long long 6 #define eps 1e-7 7 #define MOD 1000000007 8 using namespace std; 9 int c[2001][2001]={1},stir2[1005][1005]={1};

hdu 3625 第一类斯特林数

题目链接:click here Examining the Rooms Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1146    Accepted Submission(s): 689 Problem Description A murder happened in the hotel. As the best detective

Light OJ 1236 Race 第二类斯特林数

第二类斯特林数 n 匹马 分成1 2 3... n组 每一组就是相同排名 没有先后 然后组与组之间是有顺序的 在乘以组数的阶乘 #include <cstdio> #include <cstring> using namespace std; int dp[1010][1010]; int a[1010]; int main() { a[0] = 1; dp[0][0] = 1; for(int i = 1; i <= 1000; i++) { dp[i][0] = 0; d

HDU 4045 Machine scheduling (组合数学-斯特林数,组合数学-排列组合)

Machine scheduling Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1000    Accepted Submission(s): 363 Problem Description A Baidu's engineer needs to analyze and process large amount of data o