Description

Solution

核心思想是把组合数当成一个奇怪的多项式,然后拉格朗日插值。。;哦对了,还要用到第二类斯特林数(就是把若干个球放到若干个盒子)的一个公式:

$x^{n}=\sum _{i=0}^{n}C(n,i)*i!*S(i,x)$

围观大佬博客(qaq公式太难打了)

Code

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ll;
const int mod=1e9+;
const int N=;
ll fac[N],finv[N],inv[N],S[N][N],inv2;
int n,m,k;
ll C(int x,int y){return x<||y<||x-y<?:fac[x]*finv[y]%mod*finv[x-y]%mod;}
ll ksm(ll x,int k){ll re=;while (k){if (k&) re=re*x%mod;k>>=;x=x*x%mod;}return re;} ll a[N];
void geta(int k)
{
memset(a,,sizeof(a));
a[]=;
for (int i=;i<k;a[]=,i++)
for (int j=i+;j;j--)
a[j]=(a[j-]-i*a[j]%mod+mod)%mod;
for (int i=;i<=k;i++) a[i]=a[i]*finv[k]%mod;
} ll bin[N],pnm[N];
void pre(int k)
{
pnm[]=;for (int i=;i<=k;i++) pnm[i]=pnm[i-]*(n+m)%mod;
bin[]=;for (int i=;i<=k;i++) bin[i]=bin[i-]*(mod-)%mod;
}
ll f[N];
ll ans;
int main()
{
inv2=ksm(,mod-);
inv[]=inv[]=fac[]=fac[]=finv[]=finv[]=; for (int i=;i<=;i++) fac[i]=fac[i-]*i%mod,inv[i]=(mod-mod/i)*inv[mod%i]%mod;
for (int i=;i<=;i++) finv[i]=finv[i-]*inv[i]%mod; S[][]=;
for (int i=;i<=;i++) for (int j=;j<=i;j++)
S[i][j]=(S[i-][j-]+S[i-][j]*j)%mod; int T;
scanf("%d",&T);
while (T--)
{
scanf("%d%d%d",&n,&m,&k);
ans=;
pre(k);geta(k);
ll cnt=ksm(,m);
for (int i=;i<=k;i++)
{
ll s=,Cmj=,m_j=cnt;
for (int j=;j<=i;j++)
{
s+=S[i][j]*fac[j]%mod*Cmj%mod*m_j%mod;
Cmj=Cmj*(m-j)%mod*inv[j+]%mod;
m_j=m_j*inv2%mod;
}
f[i]=s%mod;
}
for (int i=;i<=k;i++)
{
ll s=;
for (int t=;t<=i;t++) s+=C(i,t)*bin[i-t]%mod*pnm[t]%mod*f[i-t]%mod;
ans+=s%mod*a[i]%mod;
}
printf("%lld\n",ans%mod);
}
}

[2016北京集训测试赛17]crash的游戏-[组合数+斯特林数+拉格朗日插值]的更多相关文章

  1. 2016北京集训测试赛(十七)Problem A: crash的游戏

    Solution 相当于要你计算这样一个式子: \[ \sum_{x = 0}^m \left( \begin{array}{} m \\ x \end{array} \right) \left( \ ...

  2. 【2016北京集训测试赛(八)】 crash的数列 (思考题)

    Description 题解 题目说这是一个具有神奇特性的数列!这句话是非常有用的因为我们发现,如果套着这个数列的定义再从原数列引出一个新数列,它居然还是一样的...... 于是我们就想到了能不能用多 ...

  3. 【2016北京集训测试赛(十)】 Azelso (期望DP)

    Time Limit: 1000 ms   Memory Limit: 256 MB Description 题解 状态表示: 这题的状态表示有点难想...... 设$f_i$表示第$i$个事件经过之 ...

  4. 【2016北京集训测试赛(二)】 thr (树形DP)

    Description 题解 (这可是一道很早就碰到的练习题然后我不会做不想做,没想到在Contest碰到欲哭无泪......) 题目大意是寻找三点对的个数,使得其中的三个点两两距离都为d. 问题在于 ...

  5. 【2016北京集训测试赛(十六)】 River (最大流)

    Description  Special Judge Hint 注意是全程不能经过两个相同的景点,并且一天的开始和结束不能用同样的交通方式. 题解 题目大意:给定两组点,每组有$n$个点,有若干条跨组 ...

  6. 【2016北京集训测试赛】river

    HINT 注意是全程不能经过两个相同的景点,并且一天的开始和结束不能用同样的交通方式. [吐槽] 嗯..看到这题的想法的话..先想到了每个点的度为2,然后就有点不知所措了 隐隐约约想到了网络流,但并没 ...

  7. 【2016北京集训测试赛】azelso

    [吐槽] 首先当然是要orzyww啦 以及orzyxq奇妙顺推很强qwq 嗯..怎么说呢虽然说之前零零散散做了一些概d的题目但是总感觉好像并没有弄得比较明白啊..(我的妈果然蒟蒻) 这题的话可以说是难 ...

  8. [2016北京集训测试赛15]statement-[线段树+拆环]

    Description Solution 由于题目要求,将a[i]->b[i](边权为i)后所得的图应该是由森林和环套树组合而成. 假如是树形结构,所有的t[i]就直接在线段树t[i]点的dfs ...

  9. [2016北京集训测试赛5]小Q与内存-[线段树的神秘操作]

    Description Solution 哇真的异常服气..线段树都可以搞合并和拆分的啊orzorz.神的世界我不懂 Code #include<iostream> #include< ...

随机推荐

  1. java持有对象【2】ArrayList容器续解

    此为JDK API1.6.0对ArrayList的解释. ArrayList 使用java泛型创建类很复杂,但是应用预定义的泛型很简单.例如,要想定义用来保存Apple对象的ArrayList,可以声 ...

  2. 【jdk源码2】Objects源码学习

    在学习上一个类TreeMap的时候,提到了这个类,这个类是jdk1.7新增的,里面有很多实用的方法.就是一个工具类,熟悉以后,如果里面有已经实现的方法,那么就不要再去实现了,省时省力省测试. 一.简单 ...

  3. [Android] 针对生成的图片文件在系统Gallery不显示的处理

    之前遇到过一个问题,就是发现我在程序中生成一个新的 Bitmap 之后,当我打开系统的 Gallery 查看时,并没有看到新生成的图像.然而打开文件浏览器,找到保存 Bitmap 所在的文件夹下,还能 ...

  4. Django Forms实例

    # Django的Form主要具有一下几大功能: # # 生成HTML标签 # 验证用户数据(显示错误信息) # HTML Form提交保留上次提交数据 # 初始化页面显示内容 # forms组件生成 ...

  5. Intellij IDEA去除@Autowired下划线红色提示

    Intellij IDEA通过@Autowired注入的对象,在不改变配置的情况下一直有红色下划线,虽然不影响运行,但是跟小Alan一样有强迫症的肯定受不鸟. 那么怎么去除它呢? 解决方式:改变@Au ...

  6. CSS3新特性,兼容性,兼容方法总结

    css3手册css3手册 边框 border-radius 用于添加圆角效果 语法: border-radius:[ <length> | <percentage> ]{1,4 ...

  7. Azure 中 Windows 虚拟机的大小

    本文介绍可用于运行 Windows 应用和工作负荷的 Azure 虚拟机的可用大小和选项. 此外,还提供在计划使用这些资源时要考虑的部署注意事项. 本文也适用于 Linux 虚拟机. 类型 大小 说明 ...

  8. SQL Server 合并复制的Article可以指定单个对象的更新方向

    如下所示,这是SQL Server中一个合并复制发布端的Article: 我们可以在Article中选择一个对象,比如这里我们选择MD.Car表,点击鼠标右键,选择"Set Properti ...

  9. python ddt模块

    ddt模块包含了一个类的装饰器ddt和两个方法的装饰器: data:包含多个你想要传给测试用例的参数: file_data:会从json或yaml中加载数据: 通常data中包含的每一个值都会作为一个 ...

  10. DevExpress06、Popup Menus、RadialMenu、XtraTabControl、SplitContainerControl、GroupControl

    Popup Menus 弹出菜单 使用弹出菜单(popup menus),我们可以在   控件上   显示   上下文选项   或  命令. 弹出菜单是一个显示了特定项的窗体,用户可以选择这些项以执行 ...