标签:ams logs content nbsp for cstring 数据 param 第一个
LGTB 最近在学分块,但是他太菜了,分的块数量太多他就混乱了,所以只能分成 3 块
今天他得到了一个数组,他突然也想把它分块,他想知道,把这个数组分成 3 块,块可以为空。假设 3 块各自的和中的最大值最小
请输出分完之后 3 块中的最大值
10 2 5 1 4 7 3 6 2 5 1
14
#include<iostream> #include<cstdio> #include<cstring> using namespace std; #define Max 100009 long long a[Max]; long long tot,n,mid,l,r,ans; long long Minn=2147483647; bool check(long long x) { long long cnt=1,totscor=0; for(int i=1;i<=n;i++) { totscor+=a[i]; if(totscor>x) { totscor=a[i]; cnt++; if(cnt>3) { return 0; } } } return 1; } int main() { scanf("%lld",&n); for(int i=1;i<=n;i++) { scanf("%lld",&a[i]); Minn=min(a[i],Minn); tot+=a[i]; } l=Minn;r=tot; while(l<=r) { mid=(l+r)>>1; if(check(mid))ans=mid,r=mid-1; else l=mid+1; } printf("%lld",ans); return 0; }
标签:ams logs content nbsp for cstring 数据 param 第一个
原文地址:http://www.cnblogs.com/zzyh/p/7191397.html