【题解】CF559E-Gerald and Path
CF *3000 的题只有紫,可怕。
由于 很小,大概可以确定是个多维 DP。根据套路我们设计 表示前 个区间,最右区间为 的答案。
为了确保转移顺序,我们肯定按端点排序,但是排序后可能还是有问题。
比如 这四个线段,最优解是 号线段向右, 号线段向左。但是 号线段向右在 号线段向左的左边,直接转移会出现问题。
所以我们需要一种方式使得直接从 转移到 。不难发现从 转移到 ,对于所有的 满足 ,如果 向左,可以被转移 覆盖,所以对所有 中的线段,我们贪心向右一定是最优。
状态 ,枚举后面线段转移,总的时间复杂度 。
#define N 105
Pr u[N]; int n, ed, f[N][N][2];
int main() {
u[0].fi = inf_, read(n);
rp(i, n)read(u[i].fi, u[i].se);
sort(u + 1, u + n + 1);
f[0][0][0] = 0;
rep(i, 0, n)rep(j, 0, i)rep(k, 0, 1){
cmx(ed, f[i][j][k]); int r = u[j].fi + k * u[j].se;
int mx = inf_, x = 0, y = 0;
rep(p, i + 1, n)rep(q, 0, 1){
int w = u[p].fi + q * u[p].se;
if(w > r){
if(w > mx)mx = w, x = p, y = q;
cmx(f[p][x][y], f[i][j][k] + mx - max(r, w - u[p].se));
}
}
}
printf("%d\n", ed); return 0;
}
作者:7KByte
出处:https://www.cnblogs.com/7KByte/p/16274973.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下