abc237 F - |LIS| = 3
题意:
求长度为 ,值域为 ,最长严格上升子列的长度恰为 的数组个数
思路:
考虑二分贪心 求 LIS 的过程: 表示长度为 的 LIS 的最小末尾值,遍历到 时找一合适 更新之。也就是说更新依赖于数组
这题 LIS 长度不超过 ,可以把每时每刻的整个数组 记录下来:f[i][g1][g2][g3]
表示考虑前 个元素,当前的 的方案数
初始状态 f[0][inf][inf][inf] = 1
,inf 为 的数
复杂度
const int P = 998244353;
int n, m, f[1001][12][12][12];
void sol() {
cin >> n >> m;
f[0][m + 1][m + 1][m + 1] = 1;
for(int i = 1; i <= n; i++)
for(int a = 1; a <= m + 1; a++)
for(int b = 1; b <= m + 1; b++)
for(int c = 1; c <= m + 1; c++)
for(int x = 1; x <= m; x++)
if(x <= a) (f[i][x][b][c] += f[i-1][a][b][c]) %= P;
else if(x <= b) (f[i][a][x][c] += f[i-1][a][b][c]) %= P;
else if(x <= c) (f[i][a][b][x] += f[i-1][a][b][c]) %= P;
int ans = 0;
for(int a = 1; a <= m; a++)
for(int b = 1; b <= m; b++)
for(int c = 1; c <= m; c++)
(ans += f[n][a][b][c]) %= P;
cout << ans;
}
标签:
dp
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?