ICPC2020上海 E题 The Journey of Geor Autumn
Pro:
https://codeforces.com/gym/102900/problem/E
给定
统计长度为n的
满足对于任意 ,
的排列方案数
Sol:
考虑从小到大填入数字
填完后,只能填在1后面的k个位置之中
同理,3只能填在1或2后面的k个位置之中
继续下去
发现每一个数字都只能填在
所有比它小的数字所占位置的后面连续k个位置组成的连续段
然后填入它后,又可以使这个连续段变长。
这个过程显然可以通过一个来计算
表示填到数字,当前连续段的长度为的方案数
转移考虑使可行连续段长度+1,+2,+3.....+k或-1
用一个前缀和优化即可做到O(n^2)
继续想下去
可以一个更优秀的转移方式
即dp[n]表示当前位置最靠后的数字写在n这个位置的方案数
每次向后转移下一个最后的位置在哪里
然后同时快速计算填写中间空隙的方案数
式子推一下大概张这个样子
用一个前缀和优化即可做到O(n)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2018-12-19 正睿 2019 省选十连测 Day2 T2 车站
2018-12-19 正睿 2019 省选附加赛 Day3 T3 摩尔庄园
2018-12-19 正睿 2019 省选附加赛 Day3 T2 功夫派
2018-12-19 正睿 2019 省选附加赛 Day3 T1 赛尔号