#include <bits/stdc++.h>
#define itn int
#define gI gi
using namespace std;
inline int gi()
{
int f = 1, x = 0; char c = getchar();
while (c < '0' || c > '9') {if (c == '-') f = -1; c = getchar();}
while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return f * x;
}
const int maxn = 200003;
int n, m, l, r, a[maxn], q[maxn], p[maxn], head = 1, tail, dp[maxn];
int main()
{
//freopen(".in", "r", stdin);
//freopen(".out", "w", stdout);
n = gi(), l = gi(), r = gi();
for (int i = 0; i <= n; i+=1) a[i] = gi(); //注意从0开始
memset(dp, 0xcf, sizeof(dp)); //设为无穷小值
int ans = dp[0], now = 0; //答案和当前进入队列的编号
dp[0] = 0;
for (int i = l; i <= n; i+=1) //注意从l开始循环
{
while (head <= tail && dp[q[tail]] <= dp[now]) --tail; //单调队列中的队尾出队
q[++tail] = now; //将这个点加入队列
while (q[head] < i - r) ++head; //判断不合法的区间
dp[i] = dp[q[head]] + a[i]; //状态转移
++now; //注意增加进入队列的编号
}
for (int i = n - r + 1; i <= n; i+=1) ans = max(ans, dp[i]); //答案取max
printf("%d\n", ans);
return 0;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
· 本地部署 DeepSeek:小白也能轻松搞定!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 在缓慢中沉淀,在挑战中重生!2024个人总结!
· 大人,时代变了! 赶快把自有业务的本地AI“模型”训练起来!
· 从 Windows Forms 到微服务的经验教训