POJ 1952 C++:BUY LOW, BUY LOWER

原创 2017年01月03日 15:19:29

思路:

1. 用两个数组分别存长度和方法数(动态规划)
2. 找到第一个比i大的数,将已i结尾的长度和方法数赋值
3. 如果又找到一个比i大的数,长度正好为i-1,那么就更新i的方法数
4. 如果找到一个数和i相等,并且此时i的长度还是初始化的1,那么将i的方法数置为0,并且break
#include <stdio.h>
#include <iostream>
using namespace std;
int n;
int a[5005];
int dp[5005];
int num[5005];
int main(){
	cin>>n;
	int i;
	for(i=0;i<n;i++){
		scanf("%d",&a[i]);
		dp[i]=1;
		num[i]=1;
	}
	int j;
	for(i=1;i<n;i++){
		for(j=i-1;j>=0;j--){
			if(a[j]>a[i]){
				if(dp[j]+1>dp[i]){
					dp[i]=dp[j]+1;
					num[i]=num[j];
				}
				else if(dp[j]+1==dp[i]){
					num[i]+=num[j];
				}
			}
			else if(a[j]==a[i]){
				if(dp[i]==1)num[i]=0;
				break;
			}
		}
	}
	int maxlen=0;
	for(i=0;i<n;i++){
        if(dp[i]>maxlen)maxlen=dp[i];
	}
	int maxsum=0;
	for(i=0;i<n;i++){
		if(dp[i]==maxlen)maxsum+=num[i];
	}
	cout<<maxlen<<' '<<maxsum<<endl;
	

	return 0;
}


版权声明:本文为博主原创文章,转载请注明出处

相关文章推荐

POJ 1952 BUY LOW, BUY LOWER

Description The advice to "buy low" is half the formula to success in the bovine stock market.To ...

POJ 1952 BUY LOW, BUY LOWER DP

BUY LOW , BUY LOWER Time Limit: 1000MS Memory Limit: 30000KB http://poj.org/problem?id=1952 先来看看d...

【最长下降子序列】北大 poj 1952 BUY LOW, BUY LOWER

/* THE PROGRAM IS MADE BY PYY */ /*-----------------------------------------------------------------...

POJ 1952 BUY LOW, BUY LOWER

题目大意:         “低价买入”几乎成了牛市大赚的准则,但作为一个更资深的投资者你应该遵循“低价买入,更低价买入”的准则,你每次买一支股票,都要比前一次买入的股票价格要低,这样买的次数越多越好...

POJ 1952 BUY LOW,BUY LOWER 最长递减子序列 动态规划

POJ 1952 BUY LOW,BUY LOWER题目描述:  题目链接:POJ 1952 BUY LOW,BUY LOWER题目大意:  题目背景是股市,要求在给定的价格序列中求每次购买价格都下降...

poj1952--BUY LOW, BUY LOWER题解

来源:http://poj.org/problem?id=1952 思路:此题第一问是要求最长递减数列的长度,这问用DP很容易解决,但关键是第二问要求最长递减数列的个数,下面直接贴代码。 代码:#...
  • ME495
  • ME495
  • 2015-07-22 23:41
  • 205

poj 1952 BUY LOW, BUY LOWER(求最长下降子序列个数)

BUY LOW, BUY LOWER Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 7475   Accepte...

poj 1952 BUY LOW, BUY LOWER dp

点击打开题目链接

POJ 1952 BUY LOW, BUY LOWER

链接:http://poj.org/problem?id=1952 BUY LOW, BUY LOWER Time Limit: 1000MS Memory Limit: 30...

POJ1952 BUY LOW, BUY LOWER

这题要求最长下降子序列的长度和个数,我们可以增加 数组maxlen[size](记录当前第1个点到第i个点之间的最长下降序列长度) 和maxnum[size](记录1~i之间的最长下降序列个数 ) ,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)