The Battle of Chibi
前言
绿题继续自己想
思路
转化题意,
\(T\) 组数据, 在长度为 \(n\) 的数列 \(a\) 中, 求出长度为 \(m\) 的严格上升子序列的个数
怎么做?
还是先考虑朴素做法, 令 \(f_{i, j}\) 表示考虑到 \(a_i\) , 现在严格上升子序列的个数为 \(j\) 的情况数
有, \(f_{0, 0} = 1\)
\[f_{i, j} = \sum_{a_k < a_i}^{0 \leq k < i} f_{k, j - 1}
\]
这个复杂度显然是 \(\mathcal{O} (n^2m)\) 的, 慢, \(\rm{what \ can \ I \ say}\)
坏了, 绿都做不出来了???
考虑这个很像 \(\rm{LIS}\) 问题的变式, 于是我们去看看怎么优化 \(\rm{LIS}\) 问题
\(\rm{LIS}\) 问题用树状数组维护当前以 \(i\) 结尾的 \(f_i\) 最大值, 那么同样的, 我们可以维护以 \(i\) 结尾的 \(f_{i, j}\) 的值, 然后树状数组求 \(\max\) 即可
实现
不管了, 比较好些
总结
善于优化神秘柿子
vivo 50
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现