[2016北京集训测试赛17]crash的游戏-[组合数+斯特林数+拉格朗日插值]
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的游戏-[组合数+斯特林数+拉格朗日插值]的更多相关文章
- 2016北京集训测试赛(十七)Problem A: crash的游戏
Solution 相当于要你计算这样一个式子: \[ \sum_{x = 0}^m \left( \begin{array}{} m \\ x \end{array} \right) \left( \ ...
- 【2016北京集训测试赛(八)】 crash的数列 (思考题)
Description 题解 题目说这是一个具有神奇特性的数列!这句话是非常有用的因为我们发现,如果套着这个数列的定义再从原数列引出一个新数列,它居然还是一样的...... 于是我们就想到了能不能用多 ...
- 【2016北京集训测试赛(十)】 Azelso (期望DP)
Time Limit: 1000 ms Memory Limit: 256 MB Description 题解 状态表示: 这题的状态表示有点难想...... 设$f_i$表示第$i$个事件经过之 ...
- 【2016北京集训测试赛(二)】 thr (树形DP)
Description 题解 (这可是一道很早就碰到的练习题然后我不会做不想做,没想到在Contest碰到欲哭无泪......) 题目大意是寻找三点对的个数,使得其中的三个点两两距离都为d. 问题在于 ...
- 【2016北京集训测试赛(十六)】 River (最大流)
Description Special Judge Hint 注意是全程不能经过两个相同的景点,并且一天的开始和结束不能用同样的交通方式. 题解 题目大意:给定两组点,每组有$n$个点,有若干条跨组 ...
- 【2016北京集训测试赛】river
HINT 注意是全程不能经过两个相同的景点,并且一天的开始和结束不能用同样的交通方式. [吐槽] 嗯..看到这题的想法的话..先想到了每个点的度为2,然后就有点不知所措了 隐隐约约想到了网络流,但并没 ...
- 【2016北京集训测试赛】azelso
[吐槽] 首先当然是要orzyww啦 以及orzyxq奇妙顺推很强qwq 嗯..怎么说呢虽然说之前零零散散做了一些概d的题目但是总感觉好像并没有弄得比较明白啊..(我的妈果然蒟蒻) 这题的话可以说是难 ...
- [2016北京集训测试赛15]statement-[线段树+拆环]
Description Solution 由于题目要求,将a[i]->b[i](边权为i)后所得的图应该是由森林和环套树组合而成. 假如是树形结构,所有的t[i]就直接在线段树t[i]点的dfs ...
- [2016北京集训测试赛5]小Q与内存-[线段树的神秘操作]
Description Solution 哇真的异常服气..线段树都可以搞合并和拆分的啊orzorz.神的世界我不懂 Code #include<iostream> #include< ...
随机推荐
- JavaScript函数节流(throttle)与函数去抖(debounce)
对于浏览器窗口大小改变的时候,来动态改变页面元素的大小,可以采用window的resize事件,实现代码: <script type="text/javascript"> ...
- PHP多进程编程之僵尸进程问题
上一篇说到了使用pcntl_fork函数可以让PHP实现多进程并发或者异步处理的效果.那么问题是我们产生的进程需要去控制,而不能置之不理.最基本的方式就是fork进程和杀死进程. 通过利用pcntl_ ...
- SerialPort类的用法与示例
转:https://www.cnblogs.com/hwBeta/p/6926363.html Microsoft .Net框架SerialPort类的用法与示例 从Microsoft .Net 2. ...
- 解决MySQL5.6中的Slave延迟问题的基本教程
一.原因分析一般而言,slave相对master延迟较大,其根本原因就是slave上的复制线程没办法真正做到并发.简单说,在master上是并发模式(以InnoDB引擎为主)完成事务提交的,而在sla ...
- python的学习之路day2
1.什么是常量: 常量在程序中是不变的量 但是在python中所有的变量都可以改 注意:为了防止区分错误,所以python中常量使用大写命名 例如: MYSQL_CONNECTION = '192.1 ...
- Linux磁盘空间占满问题快速定位
1.df -h命令查看系统盘与各个磁盘的占用空间比率 [tidb@:vg_adn_tidbCkhsTest:172.31.30.62 /dev]$df -Th Filesystem Type Size ...
- 内网DHCP攻击
局域网内DHCP攻击 实验环境:两个win2008 r2虚拟机(一台用作正常的DHCP服务器,另一台用作伪造DHCP服务器),两个win7虚拟机(用作客户机),一个kali虚拟机(用作攻击,耗尽DHC ...
- [工具]iperf测试带宽
之前被要求测试网卡带宽能力,发现了iperf这个工具,记录下来防止遗忘. iperf是个开源跨平台测试带宽工具,windows.linux.macOS--都支持,安装也挺方便. 1.安装 地址:htt ...
- 13.5.SolrCloud集群使用手册之数据导入
转载请出自出处:http://www.cnblogs.com/hd3013779515/ 1.使用curl命令方式 SolrCloud时会根据路由规则路由到各个shard. 删除所有数据 curl h ...
- Python3 下找不到urllib2的问题
Python 3.* 用urllib.request来代替原来的urllib2,因此调用的时候改为: >>> import urllib.request >>> u ...