i 不变时,f[i][k] 随 k 的增大而减小,g[j][t] 同理。所以当 k 增大时,t 显然单调不增。
于是大力预处理的复杂度降到了 O(n3),可以过了。
代码
#include<cstdio>#include<algorithm>usingnamespace std;
constint maxn = 2e2 + 5;
constint maxt = 4e2 + 5;
constint inf = 0x3f3f3f3f;
structact
{
int l, r;
} a[maxn];
int n, m;
int val[maxt];
int f[maxt][maxn], g[maxt][maxn];
int c[maxt][maxt], s[maxt][maxt];
intmain(){
// freopen("P1973_11.in", "r", stdin);scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
scanf("%d%d", &a[i].l, &a[i].r);
a[i].r += a[i].l - 1;
val[++m] = a[i].l, val[++m] = a[i].r;
}
sort(val + 1, val + m + 1);
m = unique(val + 1, val + m + 1) - val - 1;
// printf("debug %d\n", m);for (int i = 1; i <= n; i++)
{
a[i].l = lower_bound(val + 1, val + m + 1, a[i].l) - val + 1;
a[i].r = lower_bound(val + 1, val + m + 1, a[i].r) - val + 1;
}
m += 2;
for (int i = 1; i <= m; i++)
for (int j = i; j <= m; j++)
for (int k = 1; k <= n; k++)
if ((a[k].l >= i) && (a[k].r <= j)) c[i][j]++;
for (int i = 0; i <= m + 1; i++)
for (int j = 0; j <= n; j++)
f[i][j] = g[i][j] = -inf;
f[0][0] = g[m + 1][0] = 0;
for (int i = 1; i <= m; i++)
{
for (int j = 0; j <= n; j++)
{
for (int k = 0; k < i; k++)
{
if (j >= c[k + 1][i]) f[i][j] = max(f[i][j], f[k][j - c[k + 1][i]]);
f[i][j] = max(f[i][j], f[k][j] + c[k + 1][i]);
}
}
}
int ans = -inf;
for (int i = 0; i <= n; i++) ans = max(ans, min(f[m][i], i));
printf("%d\n", ans);
for (int i = m; i >= 1; i--)
{
for (int j = 0; j <= n; j++)
{
for (int k = i + 1; k <= m + 1; k++)
{
if (j >= c[i][k - 1]) g[i][j] = max(g[i][j], g[k][j - c[i][k - 1]]);
g[i][j] = max(g[i][j], g[k][j] + c[i][k - 1]);
}
}
}
for (int i = 1; i <= m; i++)
for (int j = i + 2; j <= m; j++)
{
s[i][j] = -inf;
for (int k = 0, l = n, tmp; k <= n; k++)
{
if (f[i][k] < 0) break;
while (l >= 0)
{
tmp = min(f[i][k] + g[j][l] + c[i + 1][j - 1], k + l);
if (tmp >= s[i][j]) s[i][j] = tmp;
elsebreak;
l--;
}
l++;
}
}
for (int k = 1; k <= n; k++)
{
// printf("[%d, %d]\n", a[k].l, a[k].r);
ans = 0;
for (int i = 1; i < a[k].l; i++)
for (int j = a[k].r + 1; j <= m; j++)
ans = max(ans, s[i][j]);
printf("%d\n", ans);
}
return0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现