100D Equal Cut
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了100D Equal Cut相关的知识,希望对你有一定的参考价值。
?????????stack target const ???????????? ret ?????? tco end cin
??????
??????????????????????????????n^3???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p2???????????????????????????????????????p1???p3????????????????????????2??????????????????????????????????????????p2????????????????????????????????????????????????????????????????????????p2???????????????????????????p1???p3?????????????????????p1???p3?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????p1+1????????????????????????p1?????????p1+2???????????????????????????????????????????????????????????????????????????O(n)?????????
??????
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<ctime>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
#define sp cout<<"---------------------------------------------------"<<endl
const long long inf=2e15+7;
long long pre[200010];
int main(){
long long n,i,x,p1,p2,p3,minn,P;
cin>>n;
for(i=1;i<=n;i++){
scanf("%lld",&x);
pre[i]=pre[i-1]+x;
}
p1=1,p2=2,p3=3;
long long ans=inf;
for(p2;p2<n;p2++){
minn=inf;
for(i=p1;i<p2;i++)
if(abs(pre[i]-(pre[p2]-pre[i]))<minn){
minn=abs(pre[i]-(pre[p2]-pre[i]));
p1=i;
}else break;
minn=inf;
if(p3<=p2)p3=p2+1;
for(i=p3;i<=n;i++)
if(abs((pre[i]-pre[p2])-(pre[n]-pre[i]))<minn){
minn=abs((pre[i]-pre[p2])-(pre[n]-pre[i]));
p3=i;
}else break;
minn=inf;long long maxn=0;
minn=min(pre[p1],min(pre[p2]-pre[p1],min(pre[p3]-pre[p2],pre[n]-pre[p3])));
maxn=max(pre[p1],max(pre[p2]-pre[p1],max(pre[p3]-pre[p2],pre[n]-pre[p3])));
ans=min(ans,maxn-minn);
}
cout<<ans<<endl;
return 0;
}
以上是关于100D Equal Cut的主要内容,如果未能解决你的问题,请参考以下文章
AtCoder Regular Contest 100 (ARC100) D - Equal Cut 二分
leetcode_1292. Maximum Side Length of a Square with Sum Less than or Equal to Threshold_[二维前缀和](代码片段