CF1603E A Perfect Problem

一个完美的序列满足任何非空子序列的最大值与最小值乘积大于等于其总和,求长度为 n,值域为 [1,n+1] 的完美序列个数,对质数 M 取模。

n200

给这个序列排序后,注意到如果所有前缀合法,那么任何子序列都合法。一个观察是,如果第一个数太小,那么总是无解。设第一个数为 a,不妨假设我们填入的是实数而不是整数,且每个位置都填入能填的最小的数,要求最后一个数 n+1,设当前数为 x,前缀和为 s,下一个数是 x,则 ax=s+x,s=ax,则 x=aa1x,所以要求 a(aa1)n1n+1,即 [(1+1a1)a1]n1a1n+1a,据此进行一些估计,发现 a 的数值必须很接近 n。用程序贪心模拟可以发现,在 n=200 时,a>180,而 n 更小的情形也类似。

注意到 a1n+aia1=aia1ana1(n+1),所以 aia1a1。所以枚举 a1=fst 后,直接进行 DP,设 fi,j,s 表示值域 [fst,i],总共填了 j 个数,s 记录 k=1jaja1,转移时枚举 t[0,sifst]。那么 s 的范围是 [0,a1],这样总复杂度只有 Θ(mnni=1mni)=Θ(n3mlogm),卡卡就过了。

posted @   kyEEcccccc  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示