luogu P1108 低价购买

Posted Nico&11101001

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了luogu P1108 低价购买相关的知识,希望对你有一定的参考价值。

题目链接

luogu P1108 低价购买

题解

朴素n^2dp,对于方案的转移利用加法原理,dp每一种最有解的方案

代码

#include<iostream>  
#include<cstdio>  
#include<algorithm>  
#include<cmath>  
using namespace std;  
const int maxn = 60007;
int f[maxn],c[maxn],a[maxn];  
int cnt=0;  
int n;
int main() {  
    scanf("%d",&n);  
    int i,j;  
    for(i=1;i<=n;i++)
        scanf("%d",a+i);  
    int ans=0;
    for(int i=1;i<=n;++i) {
        f[i]=1;
        for(int j=1;j<i;++j) {
            if(a[i]<a[j])
                f[i]=max(f[i],f[j]+1);
            ans=std::max(ans,f[i]);
        }
    }
    for(int i=1;i<=n;++i) {
        if(f[i]==1)c[i]=1;
        for(int j=1;j<i;++j) {
            if(f[i]==f[j]&&a[i]==a[j])c[j]=0;
            else if(f[j]+1==f[i]&&a[i]<a[j])c[i]+=c[j];
        }
    }
    int cnt=0;
    for(int i=1;i<=n;++i) {
        if(f[i]==ans)cnt+=c[i];
    }
    std::cout<<ans<<" "<<cnt<<std::endl;
    return 0;  
}  
/*
12
68 69 54 64 68 64 70 67 78 62
98 87
 */ 

以上是关于luogu P1108 低价购买的主要内容,如果未能解决你的问题,请参考以下文章

P1108 低价购买

入门动态规划 洛谷P1108 低价购买

P1108 低价购买

P1108 低价购买

P1108 低价购买 dp

洛谷P1108 低价购买[DP | LIS方案数]