- https://ac.nowcoder.com/acm/contest/140/D
- 一共有n件商店,按顺序从1-n到每个商店买卖东西的价格和不同,白兔想用差价挣钱。
- 每次只能携带一种物品。问白兔最多赚多少的钱,和对应的交易次数
- 各个不下降子序列最后一个元素减第一个元素的和即为最优解。
-
#include<bits/stdc++.h> #define maxn 100005 #define ll long long using namespace std; ll a[maxn]; int main() { int T; cin>>T; while(T--) { ll n,f,sum=0,mon=0,num=0; cin>>n; for(int i=1; i<=n; i++) cin>>a[i]; for(int i=1; i<=n; i++) { int f=i; for(int j=i+1; j<=n; j++,f++) { if(a[j]>=a[f]) sum=a[j]-a[i]; if(a[j]<a[f]||j==n) { i=j-1; if(sum!=0) { mon=mon+sum; num++; sum=0; } break; } } } cout<<mon<<" "<<num*2<<endl; } return 0; }
D-money-贪心
最新推荐文章于 2024-03-26 22:35:55 发布