社区讨论

0分求助(玄关)

P1725琪露诺参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@lx35vjcr
此快照首次捕获于
2024/06/06 19:15
2 年前
此快照最后确认于
2024/06/06 21:39
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int a[200005],dp[200005];
struct Node{
	int w,i;
};
deque<Node>p;//zhu,bei
int main(){
	int n,l,r;
	scanf("%d%d%d",&n,&l,&r);
	for(int i=0;i<=n;i++){
		scanf("%d",&a[i]);
	}
	for(int i=0;i<=n+1;i++){
		if(!p.empty()&&p.back().i<i-l){
			p.pop_back();
		}
		if(p.empty()){
			dp[i]=a[i];
		}
		else{
			dp[i]=a[i]+p.back().w;
		}
		if(i-l+1>=1){
			while(!p.empty()&&dp[i-l]>=p.front().w){
				p.pop_front();
			}
			p.push_front({dp[i-l],i});
		}
	}
	for(int i=0;i<=n+1;i++){
		printf("%d ",dp[i]);	
	}
	return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...