下载样例自己测输出是对的,但是全wa,求佬指正,感谢必关注大佬
  • 板块P1725 琪露诺
  • 楼主Exile_Code
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/11/11 17:34
  • 上次更新2023/11/12 17:16:56
查看原帖
下载样例自己测输出是对的,但是全wa,求佬指正,感谢必关注大佬
819682
Exile_Code楼主2023/11/11 17:34
#define  _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
#include <vector>
#include <set>
#include <map>
#include <unordered_map>
#include <cstdio>
#include <cstring>
#include <queue>
#include <cstdlib>
#include <algorithm>
#include <list>
#include <string>
#include <cmath>
#include <bitset>
#include <stack>
#include <unordered_set>


#define ull				unsigned long long 
#define ll				long long
#define pii				pair<ll ,ll>
#define ft				first
#define sd				second
#define pr				pair
#define cy				cout<<"Yes"<<endl
#define cn				cout<<"No"<<endl
#define forn(i,n)		for(int (i)=0;(i)<(n);(i)++)   
#define forne(i,n)		for(int (i)=1;(i)<=(n);(i)++)
#define rforn(i,n)		for(int (i)=(n-1);(i)>=(0);(i)--)   
#define rforne(i,n)		for(int (i)=(n);(i)>=(1);(i)--)
#define vv				vector
const int inf = 0x004f4f4f;
const int N = 5e5 + 10;
struct edge {
	int next, to, w;
};
vv<vv<pii>>tree;
vv<vv<edge>>e;
ll t;


vv<int>dmx = {1,1,-1,-1,2,2,-2,-2};
vv<int>dmy = {2,-2,2,-2,1,-1,1,-1};
vv<int>dx = {1,-1,0,0};
vv<int>dy = {0,0,-1,1};
void solve() {

	int n, l, r; cin >> n >> l >> r;
	vv<int>nums(n + 1);
	forn(i, n+1)
		cin >> nums[i];

	deque<int>q;
	vv<ll>f(n + 1);
	forne(i, l-1)
		f[i] = -inf;

	ll mx = -inf;
	for (int i = 0; i <= n;i++) {
		
		while (i-r>=0&&q.size() && f[q.back()] <= f[i - l])
			q.pop_back();

		if(q.size()&&i - r > q.front())
			q.pop_front();

		if(i-l>=0)
			q.push_back(i - l);

		if(q.size())
			f[i] = f[q.front()] + nums[i];

		if (i + r > n)
			mx = max(mx, f[i]);
	}
	
	cout << mx << endl;
}       
int main() {


	t = 1;
	//cin >> t;

	while (t--)
		solve();


	return 0;
}


2023/11/11 17:34
加载中...