90 分,求调
查看原帖
90 分,求调
1357413
Octopus_hsfzy楼主2024/12/28 21:55
#include <bits/stdc++.h>
using namespace std;
long long n,s[2000005],zym,x;
deque<long long> shanshan;
int main(){
	freopen("P2629.9_in","r",stdin);
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>s[i];
		s[i]+=s[i-1];
	}
	for(int i=n+1;i<=2*n;i++){
		s[i]=s[n]+s[i-n];
	}
	for(int i=1;i<=2*n-2;i++){
		if(shanshan.empty()){
			shanshan.push_back(i);
		}
		else{
			if(i>=n){
				if(shanshan.front()<i-n+1){
					shanshan.pop_front();
				}
			}
			while(!shanshan.empty()&&s[i]-x<s[shanshan.back()]-x){
				shanshan.pop_back(); 
			}
			shanshan.push_back(i);
			if(i>=n){
				if(s[shanshan.front()]-x>=0){
					zym++;
				}
				x=s[i-n+1];
			}
		}
	}
	cout<<zym;
	return 0;
}

提交记录

2024/12/28 21:55
加载中...