100但是附加样例错了两个求条
查看原帖
100但是附加样例错了两个求条
1318814
wangqiyu_why楼主2025/7/28 17:14
#include <bits/stdc++.h>
using namespace std;
int n, a[200005], l, r, dp[200005], c[200005];
int main()
{
    cin >> n >> l >> r;
    for(int i = 0;i <= n;i++)
    {
        cin >> a[i];
    }
    int head = 0, tail = n;
    for(int i = l;i <= n;i++)
    {
        while(dp[c[tail]] <= dp[i - l] && head <= tail)tail--;
        c[++tail] = i - l;
        while(c[head] < i - r && head <= tail)head++;
        //cout << c[head] << ' ' << c[tail] << endl;
        dp[i] = dp[c[head]] + a[i];
    }
    int ans = 0;
    for(int i = n - r + 1;i <= n;i++)
    {
        ans = max(ans, dp[i]);
    }
    cout << ans;
    return 0;
}
2025/7/28 17:14
加载中...