萌新求助!TLE #3
有没有不用单调队列的动态规划解法
#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9;
int n, l, r, maxn = -INF, f[400005], a[400005]; bool vis[400005];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin >> n >> l >> r;
for (int i = 0; i <= n; i ++) cin >> a[i];
for (int i = 1; i <= n + r; i ++)
{
f[i] = -INF;
vis[i] = false;
}
f[0] = 0;
vis[0] = true;
for (int i = l; i <= n + r; i ++)
{
for (int j = max(i - r, 0); j <= i - l; j ++)
if (vis[j])
f[i] = max(f[i], f[j] + a[i]);
if (f[i] != INF) vis[i] = true;
}
for (int i = n + 1; i <= n + r; i ++) maxn = max(maxn, f[i]);
cout << maxn << endl;
return 0;
}