[cf1528F]AmShZ Farm
考虑$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的更多相关文章
- Codeforces 1528F - AmShZ Farm(转化+NTT+推式子+第二类斯特林数)
Codeforces 题目传送门 & 洛谷题目传送门 神仙题,只不过感觉有点强行二合一(?). 首先考虑什么样的数组 \(a\) 符合条件,我们考虑一个贪心的思想,我们从前到后遍历,对于每一个 ...
- SharePoint 2013: A feature with ID has already been installed in this farm
使用Visual Studio 2013创建一个可视web 部件,当右击项目选择"部署"时报错: "Error occurred in deployment step ' ...
- 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 ...
- How To Restart timer service on all servers in farm
[array]$servers= Get-SPServer | ? {$_.Role -eq "Application"} $farm = Get-SPFarm foreach ( ...
- ZOJ 2412 Farm Irrigation
Farm Irrigation Time Limit: 2 Seconds Memory Limit: 65536 KB Benny has a spacious farm land to ...
- nginx+iis、NLB、Web Farm、Web Garden、ARR
nginx+iis实现负载均衡 在win2008R2上使用(NLB)网络负载均衡 NLB网路负载均衡管理器详解 [译文]Web Farm和Web Garden的区别? IIS负载均衡-Applicat ...
- 续并查集学习笔记——Closing the farm题解
在很多时候,并查集并不是一个完整的解题方法,而是一种思路. 通过以下题目来体会并查集逆向运用的思想. Description Farmer John and his cows are planning ...
- 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 ...
- hdu.1198.Farm Irrigation(dfs +放大建图)
Farm Irrigation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
随机推荐
- 题解 [CTSC2006]歌唱王国
题目传送门 Desctiption 见题面. Solution 人类智慧... 考虑这样一个赌博游戏,现在有一个猴子,它随机从 \(1\sim n\) 中选一个打出来.现在有若干个赌徒,他们一开始都有 ...
- SpringBoot之日志注解和缓存优化
SpringBoot之日志注解和缓存优化 日志注解: 关于SpringBoot中的日志处理,在之前的文章中页写过: 点击进入 这次通过注解+Aop的方式来实现日志的输出: 首先需要定义一个注解类: @ ...
- Bert文本分类实践(三):处理样本不均衡和提升模型鲁棒性trick
目录 写在前面 缓解样本不均衡 模型层面解决样本不均衡 Focal Loss pytorch代码实现 数据层面解决样本不均衡 提升模型鲁棒性 对抗训练 对抗训练pytorch代码实现 知识蒸馏 防止模 ...
- 论文解读(MPNN)Neural Message Passing for Quantum Chemistry
论文标题:DEEP GRAPH INFOMAX 论文方向: 论文来源:ICML 2017 论文链接:https://arxiv.org/abs/1704.01212 论文代码: 1 介绍 本文的目标 ...
- 手把手教你写hexo博客
市面上现在有各种博客框架,本博客教大家的是Hexo博客框架,目前比较火.搭建博客中遇到各种各样问题,网上方案也比较成熟. 一.搭建环境 安装 git 安装 node.js 安装 Hexo npm in ...
- 论文解读丨表格识别模型TableMaster
摘要:在此解决方案中把表格识别分成了四个部分:表格结构序列识别.文字检测.文字识别.单元格和文字框对齐.其中表格结构序列识别用到的模型是基于Master修改的,文字检测模型用到的是PSENet,文字识 ...
- NOIP模拟84(多校17)
T1 宝藏 解题思路 考场上一眼出 \(nlog^2\) 做法,然后没看见是 1s 3e5 的数据,我竟然以为自己切了?? 考完之后尝试着把二分改为指针的移动,然后就过了??或许是数据水吧,感觉自己的 ...
- 数位dp & 热身训练7
数位dp 数位dp是一种计数用的dp,一般就是要统计一段区间$[L,R]$内,满足一定条件的数的个数,或者各个数位的个数. 数位dp使得暴力枚举变为满足一定状态的记忆化,更加优秀. 数位dp常常会考虑 ...
- CF375D Tree and Queries 题解
感觉CF的题目名都好朴素的样子 你谷链接 首先这题显然是个dsu on tree 但是我不会. 其次这题显然是个莫队.这我会啊! 然后会发现好像不是很对劲.因为每次询问都有一个k,貌似和传统的莫队数颜 ...
- 疯狂Java基础Day1
--每过一遍基础,都是一次提升! 太多遗忘了,慢慢补... 推一个Java学习教程--->b站搜:狂神说Java系列(排序完毕) 推荐原因:讲的不错,会涉及到底层,也会讲讲面试. 一.注释 主要 ...