[2022编思1062]找出最少动作数
[2022编思1062]找出最少动作数
题面
有一个栈,这个栈有个状态,每个状态记为每个状态里面有种数字,数字有个。
考虑从全空,依次经历,让操作数最小化。
sov
是一个神奇的区间DP。
考虑对于某个区间,从开始塞进去不用动的数字有个,这个区间要进行次操作,转移可以是:
结束
code
#include<stdio.h>
#include<string.h>
#define min(a, b) (a > b ? b : a)
#define MAXN 105
int a[MAXN][MAXN];
int c[MAXN][MAXN];
int f[MAXN][MAXN];
int n, m;
int main()
{
scanf("%d %d", &m, &n);
for(int i = 1; i <= m; ++i)
{
for(int j = 1; j <= n; ++j)
{
scanf("%d", &a[i][j]);
}
}
for(int i = 1; i <= m; ++i)
{
int mi;
for(int k = 1; k <= n; ++k)
{
mi = 0x3f3f3f3f;
for(int j = i; j <= m; ++j)
{
mi = min(a[j][k], mi);
c[i][j] += mi;
}
}
}
memset(f, 0x3f, sizeof(f));
for(int i = 1; i <= m; ++i) f[i][i] = 2 * c[i][i];
for(int len = 1; len <= m; ++len)
{
for(int l = 1; l + len - 1 <= m; ++l)
{
int r = l + len - 1;
for(int k = l; k <= r; ++k)
{
f[l][r] = min(f[l][r], f[l][k] + f[k + 1][r] - 2 * c[l][r]);
}
}
}
printf("%d", f[1][m]);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现