2018牛客暑期ACM多校训练营第二场 - D题

D. money

White Cloud has built n stores numbered from 1 to n.
White Rabbit wants to visit these stores in the order from 1 to n.
The store numbered i has a price a[i] representing that White Rabbit can spend a[i] dollars to buy a product or sell a product to get a[i] dollars when it is in the i-th store.
The product is too heavy so that White Rabbit can only take one product at the same time.
White Rabbit wants to know the maximum profit after visiting all stores.
Also, White Rabbit wants to know the minimum number of transactions while geting the maximum profit. Notice that White Rabbit has infinite money initially.

输入描述:
The first line contains an integer T(0<T<=5), denoting the number of test cases.
In each test case, there is one integer n(0<n<=100000) in the first line,denoting the number of stores.
For the next line, There are n integers in range [0,2147483648), denoting a[1..n].
输出描述:
For each test case, print a single line containing 2 integers, denoting the maximum profit and the minimum number of transactions.
示例1:

输入
 

1
5
9 10 7 6 8

输出
 

3 4

#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long int ll;
ll dp[100010][0];
ll map1[100010];
int n;
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d",&n);
		scanf("%lld",&map1[1]);
		ll temp0=0,temp1=-map1[1],cont0=0,cont1=1;
		dp[1][0]=0;
		dp[1][1]=-map1[1];
		for(int i=2;i<=n;++i)
		{
			scanf("%lld",&map1[i]);
			if(temp0<temp1+map1[i])
				dp[i][0]=temp1+map1[i],cont0=cont1+1;
			else
				dp[i][0]=temp0;

			if(temp1<temp0-map1[i])
				dp[i][1]=temp0-map1[i],cont1=cont0+1;
			else
				dp[i][1]=temp1;

			temp0=max(dp[i][0],temp0);
			temp1=max(dp[i][1],temp1);
		}
		if(temp0>temp1)
			printf("%lld %lld\n",temp0,cont0);
		else if(temp0<temp1)
			printf("%lld %lld\n",temp1,cont1);
		else
			printf("%lld %lld\n",temp1,min(cont0,cont1));
	}
}

 

全部评论

相关推荐

11-20 22:03
东北大学 Java
用哈基米写的简历,有点夸大,等我后面改谦虚点,能不能找个日常实习,项目是点评和天机,没什么荣誉要不要把蓝桥杯和六级删了算了,实在没门面
程序员花海:日常实习这份简历够用的,等实习之后把实习经历结合业务好好写一下 到时候把实习经历放在项目经历的前面 可以看我主页修改简历的模板
如何写一份好简历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务