来自学长的馈赠8 社论

IOI 赛制 suki

A. 跳一跳

递推可以 O(n) .

对每个点考虑贡献然后错位相减可以得到答案是 f(n)=1n11n(n1)+11n+i=1n11i .

可以分段打表优化,或者前面无脑逆元后面的调和级数用多项式科技优化,这样就是 O(nlogn) 的了 .

B. 求和

首先 g(n) 直接扩展欧拉定理递归就可以在 O(logn) 步内求出 .

然后分段打表即可,O(nlogn)107 的表也不是很慢 .

C. 明明的随机数

fi 表示有 i 个不限制的行,m 个互不相同的列的方案数 . gi 表示有 i 个互不相同的行,m 个互不相同的列的方案数,则

fi=j=1i{ij}gi

Stirling 反演即得

gi=j=1i(1)ij[ij]fi

注意到 fi=(ci)m_,于是 g 就好求了 .

我们先算出 k1×k2 的方案然后乘 {nk1}{mk2} 即可 .

第一类 Stirling 数可以直接递推 O(k1k2) 做,乘用的第二类 Stirling 数可以用

k!{nk}=i=1k(1)ki(ki)in

直接暴力模拟,O(k1+k2) .


Bonus:O(nlogn) 做法 .

我不会复杂度分析,于是令 n,m,k1,k2 同阶 .

首先一行第一类 Stirling 数可以倍增做到 O(nlogn) .

那么考虑如何快速求 fi=(ci)m_ .

下降幂化普通幂:

xn_=k[nk](1)nkxk

第一类 Stirling 数我们已经求过了,于是我们只需要求上面那个玩意在 ci 处的取值 .

然后就是 CZT 板子了吧,可以 O(nlogn) .

总时间复杂度 O(nlogn) .

D. 凯爹博弈

so lazy,

posted @   yspm  阅读(85)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
😅​
点击右上角即可分享
微信分享提示