DOJ logoDOJ
题目
最近添加的题目收藏的题目Workbooks
分类DLC比赛小组团队讨论区
排名
解题数量排行榜连续解题排名DOJ Power 排行榜
评测状态
征题登录注册
DOJ logoDOJ

支持 OI 子任务计分、Elo 等级分和 Discord 账号绑定的社区在线评测系统。

题目
题目列表分类
社区
比赛排名讨论区公告举办外部比赛指南
账号
登录注册评测状态
政策
服务条款DLC 使用规则隐私政策API 文档语言运行环境比赛排名奖励评级与表现
© 2026 DOJ
保留所有权利
题解

让序列不再有序 2

返回题目

题解

不同的重排列中恰有一个有序序列。维护每个前缀的重排列数 WWW。加入第 iii 个元素后,设其值的新频率为 ccc,更新 W←W⋅i/cW\leftarrow W\cdot i/cW←W⋅i/c,最后输出 W−1W-1W−1。前缀的重排列数不会超过整体,因此 W≤1012+1W\leq10^{12}+1W≤1012+1。乘法中间值不超过 (1012+1)105<1.01⋅1017(10^{12}+1)10^5<1.01\cdot10^{17}(1012+1)105<1.01⋅1017,可用有符号64位整数。使用映射表的时间为 O(Nlog⁡N)O(N\log N)O(NlogN)。