zoukankan      html  css  js  c++  java
  • 洛谷P1108 低价购买


    题目描述

    “低价购买”这条建议是在奶牛股票市场取得成功的一半规则。要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买;再低价购买”。每次你购买一支股票,你必须用低于你上次购买它的价格购买它。买的次数越多越好!你的目标是在遵循以上建议的前提下,求你最多能购买股票的次数。你将被给出一段时间内一支股票每天的出售价(2^16范围内的正整数),你可以选择在哪些天购买这支股票。每次购买都必须遵循“低价购买;再低价购买”的原则。写一个程序计算最大购买次数。

    这里是某支股票的价格清单:

    日期 1 2 3 4 5 6 7 8 9 10 11 12

    价格 68 69 54 64 68 64 70 67 78 62 98 87

    最优秀的投资者可以购买最多4次股票,可行方案中的一种是:

    日期 2 5 6 10

    价格 69 68 64 62

    输入输出格式

    输入格式:

     

    第1行: N (1 <= N <= 5000),股票发行天数

    第2行: N个数,是每天的股票价格。

     

    输出格式:

     

    输出文件仅一行包含两个数:最大购买次数和拥有最大购买次数的方案数(<=2^31)当二种方案“看起来一样”时(就是说它们构成的价格队列一样的时候),这2种方案被认为是相同的。

     

    输入输出样例

    输入样例#1:
    BUYLOW.IN
    12
    68 69 54 64 68 64 70 67 78 62 98 87
    
    输出样例#1:
    BUYLOW.OUT
    4 2












    看到"提高+"难度就试着做了下

    然而只是个升级版的LIC?

    f[序号]=最长长度

    c[序号]=方法数量

    当f[i]=f[j]+1,且数字满足大小关系时,c[i]+=c[j]

    当f[i]=f[j],且数字相等时,c[j]=0,避免重复计算

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<algorithm>
     4 #include<cmath>
     5 using namespace std;
     6 long long f[6000];
     7 long long c[6000];
     8 int cnt=0;
     9 int n;
    10 long long a[6000];
    11 int main(){
    12     scanf("%d",&n);
    13     int i,j;
    14     for(i=1;i<=n;i++){
    15         scanf("%d",&a[i]);
    16     }
    17     int max1=0;
    18     for(i=1;i<=n;i++){
    19           for(j=1;j<i;j++) if(a[i]<a[j] && f[i]<f[j]+1)f[i]=f[j];
    20         f[j]++;
    21           if(f[j]==1)c[j]=1;
    22         for(j=1;j<i;j++){
    23             if(a[i]<a[j] && f[i]==f[j]+1){
    24                 c[i]+=c[j];    
    25             }
    26             else if(a[i]==a[j] && f[i]==f[j]) c[j]=0;
    27         }
    28         if(f[i]>max1)max1=f[i];
    29     }
    30     
    31     for(i=1;i<=n;i++){
    32         if(f[i]==max1)cnt+=c[i];
    33     }
    34     printf("%d %d",max1,cnt);
    35     return 0;
    36 }


  • 相关阅读:
    关于这个 blog
    P6499 [COCI2016-2017#2] Burza 题解
    CF1172F Nauuo and Bug 题解
    CF1479D Odd Mineral Resource 题解
    CF1442E Black, White and Grey Tree 题解
    CF1442D Sum 题解
    CF1025D Recovering BST 题解
    CF1056E Check Transcription 题解
    CF1025F Disjoint Triangles 题解
    红包算法的PHP实现
  • 原文地址:https://www.cnblogs.com/SilverNebula/p/5550572.html
Copyright © 2011-2022 走看看