小清新deque求调
查看原帖
小清新deque求调
374769
Epi4any楼主2022/11/11 22:27

rt,萌新初学单调队列优化dp,样例总是过不了,不太会调试,求教(大佬轻喷qwq)

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 5;
int n, k, e[maxn], f[maxn], sum;
deque<int> q;
int main() {
	cin >> n >> k;
	for (int i = 1; i <= n; i++) {
		cin >> e[i], sum += e[i];
	}
	f[1] = e[1], q.push_back(1);
	for (int i = 2; i <= n; i++) {
		while (!q.empty() && q.front() <= i - k) q.pop_front();
		if (!q.empty()) f[i] = f[q.front()] + e[i];
		while (!q.empty() && f[q.back()] >= f[i]) q.pop_back();
		q.push_back(i);
	}
	int mn = 2e9;
	for (int i = n; i >= n - k + 1; i--) mn = min(mn, f[i]);
	cout << sum - mn << endl;
	return 0;
}
2022/11/11 22:27
加载中...