[解题记录] P2629 好消息,坏消息
P2629 好消息,坏消息#
解题思路#
暴力枚举每个 的复杂度是 的,而且可以看出这个是一个环,为了方便实现,我们要使用断环
为链的方法,这样用关心 到 的值就行了,由于我们需要知道一段数的值,所以想到要用
前缀和,但是这并不能保证每一段都大于 ,我们应维护每个区间的最小值,然后用最小值减去区间的
开头再判断即可
code#
#include <bits/stdc++.h>
#define int long long
using namespace std;
inline int read(){
int x=0,f=1;char ch=getchar();
while(ch>'9'||ch<'0'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}
return x*f;
}
const int N=2e6+10;
int a[N],n,tot,q[N],l=1,r,s[N];
signed main(){
n=read();
for(int i=1;i<=n;++i) a[i+n]=a[i]=read();
for(int i=1;i<2*n;++i) s[i]=a[i]+s[i-1];
for(int i=1;i<2*n;++i){
while(l<=r&&q[l]<=i-n) l++;
while(l<=r&&s[q[r]]>=s[i]) r--;
q[++r]=i;
if(i>=n){
if(s[q[l]]-s[i-n]>=0) tot++;
}
}
cout<<tot<<endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具