利用贪心的思想,寻找上升子序列。。如果下一个商品价格大于当前,继续向下遍历,否则在当前卖出,下一个买入(存到pre).注意要比较pre与判断出要在此处卖出的价格大小。
#include<iostream>
#include<algorithm>
#include<math.h>
#include<cstring>
#define ll long long
using namespace std;
ll hh[100010];
int main()
{
int t,n;
scanf("%d",&t);
while(t--)
{
memset(hh,0,sizeof(hh));
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%lld",&hh[i]);
}
int c=0;
ll profit=0;
ll pre=hh[0];
for(int i=0;i<n;i++)
{
if(hh[i+1]>=hh[i])
{
continue;
}
else{
if(hh[i]>pre)
{
profit+=hh[i]-pre;
c++;
}
pre=hh[i+1];
}
}
printf("%lld %d\n",profit,c*2);
}
return 0;
}