#include<bits/stdc++.h>//mlgb就能买卖两次,我tm没有看见
using namespace std;
int b[100009];
int dp[100009];
int d[100009];
int main()
{
int t,n;
cin>>t;
int maxs=0;
for(int q=1;q<=t;q++)
{
cin>>n;
maxs=0;
memset(dp,0,sizeof(dp));
memset(d,0,sizeof(d));
for(int i=1;i<=n;i++)
{
cin>>b[i];
dp[i]=dp[i-1];
for(int o=1;o<=i-1;o++)
{
dp[i]=max(dp[i],b[i]-b[o]);
}
}
for(int i=n;i>=1;i--)
{
d[i]=d[i+1];
for(int o=i+1;o<=n;o++)
{
d[i] = max(d[i],b[o]-b[i]);
}
if(maxs<dp[i]+d[i]) maxs=dp[i]+d[i];
}
for(int i=1;i<=n;i++)
{
cout<<" "<<dp[i]<<" "<<d[i]<<endl;
}
cout<<"---"<<maxs<<endl;
}
return 0;
}
这是noi的题,我洛谷找不到P8464 老师说有两次买卖,我知道,但这样它不会重合吗,就像
6 8 7 4 1 -2
第一次是从前往后找,第二次是从后往前找,第一次的买卖的4不会和第二次买卖的7重合吗,这样是不行的阿,但我测试了一下又没有错。求解释一下,谢谢