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;
}


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

usaco training 4.3.1 Buy Low, Buy Lower 题解

Buy Low, Buy Lower题解 The advice to "buy low" is half the formula to success in the stock market. B...
  • u013724185
  • u013724185
  • 2014年02月27日 08:43
  • 1188

Usaco 4.3.1 Buy Low, Buy Lower 详细解题报告

Usaco 4.3.1 Buy Low, Buy Lower By 小兔齐齐 描述 “逢低吸纳”是炒股的一条成功秘诀。如果你想成为一个成功的投资者,就要遵守这条秘诀: "逢低吸纳,越...
  • dingyaguang117
  • dingyaguang117
  • 2010年08月25日 11:30
  • 2657

BUY LOW, BUY LOWER----POJ_1952----最长递减子序列

题目地址:http://poj.org/problem?id=1952 BUY LOW, BUY LOWER Time Limit: 1000MS   Memory L...
  • dr5459
  • dr5459
  • 2012年07月20日 08:57
  • 1358

poj 1952 BUY LOW, BUY LOWER dp 但去重真是令人纠结啊!!!

这道题一开始看感觉很简单,就一个降序问题,后来这个去重真是让我煞费苦心啊!!!注意b[]数组的作用  #include using namespace std; int dp[5005];//记...
  • youngyangyang04
  • youngyangyang04
  • 2011年08月20日 13:52
  • 607

POJ1952 BUY LOW, BUY LOWER

这题要求最长下降子序列的长度和个数,我们可以增加 数组maxlen[size](记录当前第1个点到第i个点之间的最长下降序列长度) 和maxnum[size](记录1~i之间的最长下降序列个数 ) ,...
  • zhang360896270
  • zhang360896270
  • 2011年08月19日 14:22
  • 2806

【USACO 2002 February】BUY LOW,BUY LOWER 低价购买

【USACO 2002 February】BUY LOW,BUY LOWER 低价购买Description  “低价购买”这条建议是在奶牛股票市场取得成功的一半规则。要想被认为是伟大的投资者,你必须...
  • codingdd
  • codingdd
  • 2017年03月09日 09:33
  • 204

poj 1952 BUY LOW, BUY LOWER dp

点击打开题目链接
  • cstdio_hao
  • cstdio_hao
  • 2014年11月03日 20:25
  • 261

POJ 1952 BUY LOW, BUY LOWER DP

BUY LOW , BUY LOWER Time Limit: 1000MS Memory Limit: 30000KB http://poj.org/problem?id=1952 先来看看d...
  • Stitch_11752
  • Stitch_11752
  • 2016年06月28日 22:05
  • 162

POJ 1952 Buy Low,Buy Lower

求最长下降子序列及其个数(严格的…..)
  • neighthorn
  • neighthorn
  • 2016年07月13日 20:03
  • 247

POJ 1952 BUY LOW, BUY LOWER

来源:http://poj.org/problem?id=1952 题意:求最长单调递减子序列的长度以及有多少种途径到达该最长单调递减子序列。 思路:求最长单调递减子序列是比较容易的了,关键是求路...
  • wmn_wmn
  • wmn_wmn
  • 2012年07月12日 09:10
  • 589
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ 1952 C++:BUY LOW, BUY LOWER
举报原因:
原因补充:

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