0
已解决
张天璨
新手天翼
新手天翼
我的TLE代码:
#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
const int INF=0x3f3f3f3f;
int n,a[10010];
int g(int l,int r){
int mid=(l+r)/2;
int sum1=0,sum2=0,maxl=-INF,maxr=-INF;
for(int i=mid;i>=l;i--){
sum1+=a[i];
maxl=max(maxl,sum1);
}
for(int i=mid+1;i<=r;i++){
sum2+=a[i];
maxr=max(maxr,sum2);
}
return maxl+maxr;
}
int f(int l,int r){
if(l==r) return a[l];
int mid=(l+r)/2;
int maxl=f(1,mid);
int maxr=f(mid+1,r);
int maxm=g(1,r);
return max(max(maxl,maxr),maxm);
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
cout<<f(1,n);
return 0;
}
TLE 0分!!求找错!
0
已采纳
张帆
中级天翼
中级天翼
你何必用分治,双重循环不就搞定了:
1.将每一天的价格算出来
2.从第一天开始,枚举买入和卖出分别是哪一天,(买入的天数<=卖出的天数)
3.ans取最优解
时间复杂度O(n^2)
0