求助

B3628 机器猫斗恶龙

题目的要求是在**任意时刻**血量都大于0,所以不能简单的输出随后的m,应该选出所有时刻的最大值
by 梧桐灯 @ 2024-07-02 09:05:56


@[UFO___pmz](/user/913562) 求关 ``` #include<bits/stdc++.h> using namespace std; const int N=100000005; int n,a[N],sum[N]; bool cmp(int x){ for (int i=1;i<=n;i++){ x+=a[i]; if (x<=0) break; } return x>=0; } void work(){ int l=1,r=100000005,ans; while (l<=r){ int mid=l+r>>1; if (cmp(mid)) ans=mid,r=mid-1; else l=mid+1; } cout<<ans+1; } int main(){ cin>>n; for (int i=1;i<=n;i++) cin>>a[i]; work(); return 0; } ```
by BlackWuKong @ 2024-07-10 09:58:14


|