- 文本框-T5
666了
- @ 2026-4-7 13:27:34
源代码: #include<bits/stdc++.h> using namespace std; long long n,m,a[200005],r,l,mid; int main(){ scanf("%lld%lld",&n,&m); for(int i=1;i<=n;i++){ scanf("%lld",&a[i]); a[i]++; r+=a[i]; } while(l+1<r){ mid=(l+r)/2; long long sum=0,t=1; for(int j=1;j<=n;j++){ if(sum+a[j]<=mid){sum+=a[j];} else{ t++; sum=a[j]; } } if(t<=m){ r=mid; } else{ l=mid; } } cout<<r-1; return 0; } 找半天了,终于!!!憾错······
NO!!!!!!!!!!!!!!
one hundred hours later
#include<bits/stdc++.h> using namespace std; long long n,m,a[200005],l,r,mid; int main(){ scanf("%lld%lld",&n,&m); l=0; r=0; for(int i=1;i<=n;i++){ scanf("%lld",&a[i]); l=max(l,a[i]); r+=a[i]+1; } while(l<r){ mid=(l+r)/2; long long sum=0,t=1; for(int j=1;j<=n;j++){ if(sum==0) sum=a[j]; else if(sum+1+a[j]<=mid) sum+=1+a[j]; else t++,sum=a[j]; } if(t<=m)r=mid; else l=mid+1; } cout<<l; return 0; }
1 条评论
-
root LV 4 SU @ 2026-4-7 17:01:29
虽然找错的过程可能比较枯燥无聊,但是相信你经过了这一次的找错,下次再遇到类似的问题,就可以比较快速的解决了。成长就是在这样的过程中,一点点积累,有一天可能就会发生质变了。
- 1
信息
- ID
- 4959
- 时间
- ms
- 内存
- MiB
- 难度
- 2
- 标签
- 递交数
- 16
- 已通过
- 8
- 上传者