P9871 [NOIP2023] 天天爱打卡 题解
先考虑
设
枚举上一次不跑步是在哪天,则有转移
其中
线段树维护
考虑如何更新
而
若
维护出
再考虑
可以发现挑战把
#include <cstdio>
#include <vector>
#include <algorithm>
#define int long long
using namespace std;
struct S
{
int l, r, v;
}a[200050];
struct T
{
int v, z;
}R[200050 << 2];
void u(int p) {R[p].v = max(R[p << 1].v, R[p << 1 | 1].v);}
void f(int p, int x) {R[p].v += x, R[p].z += x;}
void d(int p) {if(R[p].z) f(p << 1, R[p].z), f(p << 1 | 1, R[p].z), R[p].z = 0;}
void M(int l, int r, int x, int s, int t, int p)
{
if(l <= s && t <= r)
return f(p, x);
d(p);
int m = s + t >> 1;
if(l <= m)
M(l, r, x, s, m, p << 1);
if(r > m)
M(l, r, x, m + 1, t, p << 1 | 1);
u(p);
}
int Q(int l, int r, int s, int t, int p)
{
if(l <= s && t <= r)
return R[p].v;
d(p);
int m = s + t >> 1, q = -1e18;
if(l <= m)
q = max(q, Q(l, r, s, m, p << 1));
if(r > m)
q = max(q, Q(l, r, m + 1, t, p << 1 | 1));
return q;
}
void D(int s, int t, int p)
{
R[p].v = R[p].z = 0;
if(s == t) return;
int m = s + t >> 1;
D(s, m, p << 1);
D(m + 1, t, p << 1 | 1);
}
int T, n, m, k, w, z, F[200050], v[200050];
vector<int> V[200050];
signed main()
{
scanf("%*lld%lld", &T);
while(T--)
{
scanf("%lld%lld%lld%lld", &n, &m, &k, &w);
v[z++] = 0;
for(int i = 1;i <= m;++i)
scanf("%lld%lld%lld", &a[i].r, &a[i].l, &a[i].v), a[i].l = a[i].r - a[i].l + 1, v[z++] = a[i].r, v[z++] = a[i].l - 1;
sort(v, v + z);
z = unique(v, v + z) - v;
for(int i = 1;i <= m;++i)
V[lower_bound(v, v + z, a[i].r) - v].push_back(i);
for(int i = 1;i <= z;++i)
{
F[i] = Q(lower_bound(v, v + z, v[i - 1] - k) - v, i - 1, 0, z, 1) - w * v[i - 1];
M(i, i, F[i] + w * v[i], 0, z, 1);
for(auto j : V[i])
M(0, lower_bound(v, v + z, a[j].l - 1) - v, a[j].v, 0, z, 1);
}
printf("%lld\n", F[z]);
D(0, z, 1);
for(int i = 0;i <= z;++i)
F[i] = v[i] = 0, V[i].clear();
z = 0;
}
return 0;
}
分类:
题解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具