这不是傻逼题吗??????

考虑到第一张是王牌的概率为 \(\frac{1}{m}\),答案就是:

\[\sum_{i=0}^n\binom{n}{i}(\frac{1}{m})^i(1-\frac{1}{m})^{n-i}i^k
\]

我们设 \(f(x)=x^k,x=\frac{1}{m}\):

\[\sum_{i=0}^n\binom{n}{i}f(i)x^i(1-x)^{n-i}
\]

然后变成 LGP6667 如何优雅地求和。

那题的瓶颈在于转化下降幂多项式,这题轻松计算出点值,然后随便一卷就行了。

复杂度 \(O(k\log k)\)。

这个在原题是存在线性做法的。

然后考虑做到 \(O(k)\)。

把柿子写出来:\(\sum_{i=0}^kf_in^{\underline{i}}x^i\)。

计算点值对其的贡献:

\[\frac{f(i)}{i!}e^{-x}=\frac{f(i)}{i!}\sum_{j=0}^{m-i}\frac{(-1)^j}{j!}x^{i+j}
\]

丢到上面的柿子里面就是:

\[\frac{1}{i!}\sum_{j=i}^m\frac{(-1)^{j-i}}{(j-i)!}n^{\underline{j}}x^j
\]
\[\frac{1}{i!}\sum_{j=i}^m\frac{(-1)^{j-i}}{(j-i)!}n^{\underline{i}}(n-i)^{\underline{j-i}}x^j
\]
\[\frac{n^{\underline{i}}}{i!}\sum_{j=0}^{m-i}\binom{n-i}{j}(-1)^jx^{i+j}
\]

考虑后面这个玩意儿 \(g_k=\sum_{i=0}^{m-k}\binom{n-k}{i}(-1)^ix^{i+k}\)。

直接把组合数拆成递推:

\[\sum_{i=0}^{m-k}\binom{n-k-1}{i}(-1)^ix^{i+k}+\sum_{i=1}^{m-k}\binom{n-k-1}{i-1}(-1)^ix^{i+k}
\]
\[(-1)^{m-i}\binom{n-k-1}{m-k}x^m+\frac{1}{x}g_{k+1}-g_{k+1}
\]

特判 \(m=1\),然后没了。

别忘了这是点值的贡献,答案是 \(\sum_{i=0}^ki^kg_i\)。

代码基本上是贺的sk的,别看了

#include<cstdio>
typedef unsigned ui;
const ui M=1e7+5,mod=998244353;
ui n,m,k,top,g[M],pri[M],idk[M],inv[M],ifac[M];bool zhi[M];
inline ui pow(ui a,ui b){
ui ans(1);for(;b;b>>=1,a=1ull*a*a%mod)if(b&1)ans=1ull*ans*a%mod;return ans;
}
inline void sieve(const ui&M){
idk[1]=1;
for(ui i=2;i<=M;++i){
if(!zhi[i])pri[++top]=i,idk[i]=pow(i,k);
for(ui x,j=1;j<=top&&(x=i*pri[j])<=M;++j){
idk[x]=1ull*idk[i]*idk[pri[j]]%mod;if(!(i%pri[j]))break;
}
}
}
signed main(){
ui ans(0);
scanf("%u%u%u",&n,&m,&k);
if(m==1)return printf("%u",pow(n,k)),0;
m=pow(m,mod-2);sieve(k);inv[0]=inv[1]=1;ifac[0]=1;
for(ui i=2;i<=k;++i)inv[i]=1ull*(mod-mod/i)*inv[mod%i]%mod;
for(ui i=1;i<=k;++i)ifac[i]=1ull*ifac[i-1]*inv[i]%mod;
ui c1(1),c2(pow(m-1,mod-2));
for(ui i=0;i<=k;++i){
if(i&1)g[0]=(g[0]+1ull*(mod-c1)*ifac[i])%mod;
else g[0]=(g[0]+1ull*c1*ifac[i])%mod;
c1=1ull*c1*m%mod*(mod+n-i)%mod;
}
for(ui i=1;i<=k;++i){
g[i]=((mod+n-i+1ull)*m%mod*g[i-1]+1ull*ifac[i-1]*ifac[k-i+1]%mod*(k-i&1?mod-c1:c1))%mod*(mod-c2)%mod*inv[i]%mod;
}
for(ui i=1;i<=k;++i)ans=(ans+1ull*idk[i]*g[i])%mod;
printf("%u",ans);
}

CF1278F题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. where子句和having子句区别

    感谢大佬:https://blog.csdn.net/XiaopinOo/article/details/78305008 where子句和having子句的区别: 1.where  不能放在grou ...

  2. Ajax向服务器发起请求

    Ajax向服务器发起请求的三个步骤: 1:创建Ajax 2:打开Ajax,打开Ajax请求 3:向服务器发起请求:需要知道地址和是get请求还是post方法 向服务器发起请求的两个方法:open 和 ...

  3. NSString为何要用copy修饰,而不是strong?

    NSString本身是无所谓的,但是如果一个 NSString 指针指向了一个 NSMutableString的内存空间的话,如果使用 strong 修饰的话,如果你在别处修改这个值的话,那么原来的值 ...

  4. Docker consul的容器服务更新与发现

    Docker consul的容器服务更新与发现 目录 Docker consul的容器服务更新与发现 一.Consul简介 1. 服务注册与发现 2. consul概述 3. consul的两种模式 ...

  5. 关于LVS的问题总结

    关于LVS的问题总结 目录 关于LVS的问题总结 1. LVS工作模式及区别 2. LVS调度算法 3. LVS调度器你的常用算法(均衡策略) (1)固定调度算法:rr.wrr.dh.sh (2)动态 ...

  6. Linux Ubuntu安装Nvidia多GPU通信库NCCL

    0. 前言 在使用Python版本的PaddleDetection进行一些实验时,想同时利用多个GPU提高效率,遇到了一点问题 You may need to install 'nccl2' from ...

  7. 【CF632F】Magic Matrix(生成树 脑洞)

    题目链接 大意 给定一个\(N\times N\)的矩阵,问是否满足以下三个条件: \(A_{i,i}=0\) \(A_{i,j}=A_{j,i}\) 对于任意的\(i,j,k\),满足\(A_{i, ...

  8. 关于sys.path.append()

    当我们导入一个模块时:import  xxx,默认情况下python解析器会搜索当前目录.已安装的内置模块和第三方模块,搜索路径存放在sys模块的path中: >>> import  ...

  9. 6U VPX i7 刀片计算机

    一.产品概述 该产品是一款基于第三代Intel i7双核四线程(或四核八线程)的高性能6U VPX刀片式计算机.产品提供了可支持全网状交换的高速数据通道,其中P1,P2各支持4个PCIe x4 Gen ...

  10. 通过JAVA对FTP服务器连接,上传,下载,读取,移动文件等

    记录一次对FTP服务器文件内容 通过Java程序对FTP服务器文件处理:连接,上传,下载,读取,移动文件等. 需求描述:今天接到一个任务,在Java项目中,读取FTP服务器上的一些文件,进行一些业务操 ...