考虑$a_{i}$是"more-equal"的组合意义,有以下构造——

有$n$个位置,每一次选择一个位置$a_{i}$,在$a_{i}$之后(包括$a_{i}$)的第一个空位上停一辆车,那么$a_{i}$即要求每一辆车都可以停(不存在停到第$n+1$个位置及以后的情况)

关于这个问题,可以在之后新增一个位置,并将整个序列变成一个环,那么方案合法当且仅当第$n+1$个位置没有车,由于每一个位置没车的概率相同,即有$(n+1)^{n-1}$种方案

接下来,即对于每一组方案,令$tot_{i}=\sum_{1\le j\le n}[a_{j}=i]$,那么贡献即$\sum_{i=1}^{n}tot_{i}^{k}$

考虑枚举$i$和$tot_{i}$,那么即要求其中恰好$tot_{i}$次为$i$且第$n+1$个位置为空的方案数

由于$i$是任意的,可以看作对于所有$i$每一个位置没车的概率相同,也即有$\sum_{i=1}^{n}{n\choose i}i^{k}n^{n-i}$种方案

将$i^{k}$用第二类斯特林数来计算,即$\sum_{i=1}^{n}{n\choose i}n^{n-i}\sum_{j=0}^{i}{i\choose j}j!S(k,j)$(其中$S(n,m)$为第二类斯特林数)

将组合数展开并交换枚举顺序,即$\sum_{j=0}^{k}S(k,j)\sum_{i=1}^{n}\frac{n!n^{n-i}}{(i-j)!(n-i)!}$(显然当$n<m$时$S(n,m)=0$)

令$i'=i-j$并构造最后一项为二项式展开,即$\sum_{j=0}^{k}\frac{n!}{(n-j)!}S(k,j)\sum_{i'=0}^{n-j}{n-j\choose i'}n^{n-j-i'}$

根据二项式展开,即$\sum_{j=0}^{k}\frac{n!}{(n-j)!}(n+1)^{n-j}S(k,j)$

根据通项公式,即$S(n,m)=\frac{1}{m!}\sum_{i=0}^{m}(-1)^{i}{m\choose i}(m-i)^{n}=\sum_{i=0}^{m}\frac{(-1)^{i}}{i!}\frac{(m-i)^{n}}{(m-i)!}$,直接ntt即可

时间复杂度为$o(k\log k)$,可以通过

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N (1<<18)
4 #define M 100005
5 #define mod 998244353
6 int n,k,ans,rev[N],a[N],b[N],fac[M],inv[M];
7 int qpow(int n,int m){
8 int s=n,ans=1;
9 while (m){
10 if (m&1)ans=1LL*ans*s%mod;
11 s=1LL*s*s%mod;
12 m>>=1;
13 }
14 return ans;
15 }
16 void ntt(int *a,int p){
17 for(int i=0;i<N;i++)
18 if (i<rev[i])swap(a[i],a[rev[i]]);
19 for(int i=2;i<=N;i<<=1){
20 int s=qpow(3,(mod-1)/i);
21 if (p)s=qpow(s,mod-2);
22 for(int j=0;j<N;j+=i)
23 for(int k=0,ss=1;k<(i>>1);k++,ss=1LL*ss*s%mod){
24 int x=a[j+k],y=1LL*ss*a[j+k+(i>>1)]%mod;
25 a[j+k]=(x+y)%mod;
26 a[j+k+(i>>1)]=(x-y+mod)%mod;
27 }
28 }
29 if (p){
30 int s=qpow(N,mod-2);
31 for(int i=0;i<N;i++)a[i]=1LL*a[i]*s%mod;
32 }
33 }
34 int main(){
35 scanf("%d%d",&n,&k);
36 fac[0]=inv[0]=inv[1]=1;
37 for(int i=1;i<M;i++)fac[i]=1LL*fac[i-1]*i%mod;
38 for(int i=2;i<M;i++)inv[i]=1LL*(mod-mod/i)*inv[mod%i]%mod;
39 for(int i=1;i<M;i++)inv[i]=1LL*inv[i-1]*inv[i]%mod;
40 for(int i=0;i<N;i++)rev[i]=(rev[i>>1]>>1)+((i&1)<<17);
41 for(int i=0;i<=k;i++){
42 a[i]=inv[i];
43 if (i&1)a[i]=mod-a[i];
44 }
45 for(int i=0;i<=k;i++)b[i]=1LL*qpow(i,k)*inv[i]%mod;
46 ntt(a,0);
47 ntt(b,0);
48 for(int i=0;i<N;i++)a[i]=1LL*a[i]*b[i]%mod;
49 ntt(a,1);
50 int s=1;
51 for(int i=0;i<=min(n,k);i++){
52 ans=(ans+1LL*s*qpow(n+1,n-i)%mod*a[i])%mod;
53 s=1LL*s*(n-i)%mod;
54 }
55 printf("%d",ans);
56 }

[cf1528F]AmShZ Farm的更多相关文章

  1. Codeforces 1528F - AmShZ Farm(转化+NTT+推式子+第二类斯特林数)

    Codeforces 题目传送门 & 洛谷题目传送门 神仙题,只不过感觉有点强行二合一(?). 首先考虑什么样的数组 \(a\) 符合条件,我们考虑一个贪心的思想,我们从前到后遍历,对于每一个 ...

  2. SharePoint 2013: A feature with ID has already been installed in this farm

    使用Visual Studio 2013创建一个可视web 部件,当右击项目选择"部署"时报错: "Error occurred in deployment step ' ...

  3. How To Collect ULS Log from SharePoint Farm

    We can use below command to collect SharePoint ULS log from all servers in the Farm in PowerShell. M ...

  4. How To Restart timer service on all servers in farm

    [array]$servers= Get-SPServer | ? {$_.Role -eq "Application"} $farm = Get-SPFarm foreach ( ...

  5. ZOJ 2412 Farm Irrigation

    Farm Irrigation Time Limit: 2 Seconds      Memory Limit: 65536 KB Benny has a spacious farm land to ...

  6. nginx+iis、NLB、Web Farm、Web Garden、ARR

    nginx+iis实现负载均衡 在win2008R2上使用(NLB)网络负载均衡 NLB网路负载均衡管理器详解 [译文]Web Farm和Web Garden的区别? IIS负载均衡-Applicat ...

  7. 续并查集学习笔记——Closing the farm题解

    在很多时候,并查集并不是一个完整的解题方法,而是一种思路. 通过以下题目来体会并查集逆向运用的思想. Description Farmer John and his cows are planning ...

  8. SharePoint Error - The current user is not an SharePoint Server farm administrator

    错误截图 错误日志 位置:C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\LOGS 主要错误 The c ...

  9. hdu.1198.Farm Irrigation(dfs +放大建图)

    Farm Irrigation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

随机推荐

  1. $\Large{\LaTeX}$ 常用公式

    $$\Large{\LaTeX}$$: \[\Large{\LaTeX} \] $ $ 表示行内 $$ $$ 表示独立 $\operatorname{lcm}(x)$\(\operatorname{l ...

  2. scala基础篇 使用getter和setter方法而不使用public的情形

    主要是基于2种情形 1) 提供读只取/只写入方法,不能随意读写 2)做赋值时变量控制,比如设定值的区间范围等 例子: object test{ def main(args: Array[String] ...

  3. 【UE4 C++ 基础知识】<8> Delegate 委托

    概念 定义 UE4中的delegate(委托)常用于解耦不同对象之间的关联:委托的触发者不与监听者有直接关联,两者通过委托对象间接地建立联系. 监听者通过将响应函数绑定到委托上,使得委托触发时立即收到 ...

  4. 力扣 - 剑指 Offer 53 - II. 0~n-1中缺失的数字

    题目 剑指 Offer 53 - II. 0-n-1中缺失的数字 思路1 排序数组找数字使用二分法 通过题目,我们可以得到一个规律: 如果数组的索引值和该位置的值相等,说明还未缺失数字 一旦不相等了, ...

  5. the Agiles Scrum Meeting 6

    会议时间:2020.4.14 20:00 1.每个人的工作 今天已完成的工作 增量组:开发广播正文展开收起功能 issues:增量组:广播正文展开收起功能实现 完善组:修复冲刺部分的bug issue ...

  6. Noip模拟67 2021.10.3

    还是困,不过已经可以用脑子思考问题了 T1 数据恢复 没啥明确的算法,可以说是贪心? 考虑部分分, 链的直接扫, 对于菊花的发现只要根节点在第一个,剩下的点位置不重要 那么按照$a/b$排序,扫一遍就 ...

  7. 一张图彻底搞懂Spring循环依赖

    1 什么是循环依赖? 如下图所示: BeanA类依赖了BeanB类,同时BeanB类又依赖了BeanA类.这种依赖关系形成了一个闭环,我们把这种依赖关系就称之为循环依赖.同理,再如下图的情况: 上图中 ...

  8. binary-tree-maximum-path-sum leetcode C++

    Given a binary tree, find the maximum path sum. The path may start and end at any node in the tree. ...

  9. dart系列之:dart语言中的变量

    目录 简介 dart中的变量 定义变量 变量的默认值 Late变量 常量 总结 简介 flutter是google在2015年dart开发者峰会上推出的一种开源的移动UI构建框架,使用flutter可 ...

  10. Linux&C网络编程————“聊天室”

    从上周到现在一直在完成最后的项目,自己的聊天室,所以博客就没怎么跟了,今天晚上自己的聊天室基本实现,让学长检查了,也有好些bug,自己还算满意,主要实现的功能有: 登录注册 附近的人(服务器端全部在线 ...