社区讨论

求调,玄关

学术版参与者 1已保存回复 1

讨论操作

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

当前回复
1 条
当前快照
1 份
快照标识符
@mlkcqg1h
此快照首次捕获于
2026/02/13 11:52
6 天前
此快照最后确认于
2026/02/13 11:59
6 天前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
int tree[maxn*4];
int dp[maxn];
int n,a[maxn],l,r;
int read(){
    int su=0,pp=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')pp=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){su=su*10+ch-'0';ch=getchar();}
    return su*pp;
}
int left_son(int k){
	return k*2;
}
int right_son(int k){
	return k*2+1;
}
void push_up(int k){
	tree[k]=max(tree[left_son(k)],tree[right_son(k)]);
	return ;
}
void build_tree(int k,int l,int r){
	if(l==r){
		tree[k]=dp[l];
		return ;
	}
	int mid=(l+r)>>1;
	build_tree(left_son(k),l,mid);
	build_tree(right_son(k),mid+1,r);
	push_up(k);
	return ;
}
void modify(int k,int l,int r,int X,int V){
	if(l==X&&r==X){
		tree[k]=V;
		return ;
	}
	int mid=(l+r)>>1;
	if(X<=mid){
		modify(left_son(k),l,mid,X,V);
	}
	if(X>mid){
		modify(right_son(k),mid+1,r,X,V);
	}
	push_up(k);
	return ;
}
int query_max(int k,int l,int r,int L,int R){
	if(L<=l&&R>=r){
		return tree[k];
	}
	int mid=(l+r)>>1;
	int ans=INT_MIN;
	if(L<=mid){
		ans=max(ans,query_max(left_son(k),l,mid,L,R));
	}
	if(R>mid){
		ans=max(ans,query_max(right_son(k),mid+1,r,L,R));
	}
	return ans;
}
int main(){
	n=read();
	l=read();
	r=read();
	for(int i=0;i<=2*n;i++) dp[i]=INT_MIN;
	for(int i=1;i<=n;i++) a[i]=read();
	dp[0]=a[0];
	build_tree(1,0,n);
	for(int i=l;i<=n;i++){
		int left=i-r,right=i-l;
		if(left<0) left=0;
		int max_ans=query_max(1,0,n,left,right);
		//cout<<i<<" "<<left<<" "<<right<<" "<<" "<<query_max(1,0,n,left,right)<<" "<<max_ans<<endl; 
		//cout<<max_ans<<endl;
		dp[i]=max(dp[i],max_ans+a[i]);
		//cout<<dp[i]<<" "<<max_ans<<"  "<<a[i]<<endl;
		modify(1,0,n,i,dp[i]);
	}
	//cout<<dp[1]<<" "<<query_max(1,0,n,0,1)<<endl;
	//cout<<dp[1]<<endl;
	int ans=0;
	for(int i=0;i<=n;i++){
		if(i+r>n){
			//cout<<a[i]<<" "<<dp[i]<<endl;
			ans=max(ans,dp[i]);
		}
	}
	cout<<ans;
	return 0;
}

样例不过,但是90分。hack全WA。样例莫名奇妙的跑出来个23。

回复

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

正在加载回复...