91分求助
  • 板块P1108 低价购买
  • 楼主AETCH
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/17 14:44
  • 上次更新2024/3/17 15:57:24
查看原帖
91分求助
1078219
AETCH楼主2024/3/17 14:44
#include<bits/stdc++.h>
using namespace std;
long long n,a[5010],dp[5010],dp_2[5010],ans_2;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)cin>>a[i];
	long long ans=0;
	for(int i=1;i<=n;i++){
		dp[i]=1;
		for(int j=1;j<i;j++){
			if(a[j]>a[i])dp[i]=max(dp[j]+1,dp[i]);
			ans=max(dp[i],ans);
		}
	}cout<<ans<<" ";
	for(int i=1;i<=n;i++){
		if(dp[i]==1)dp_2[i]=1;
		for(int j=1;j<i;j++){
			if(dp[i]==dp[j]+1&&a[i]<a[j])dp_2[i]+=dp_2[j];
			if(dp[i]==dp[j]&&a[i]==a[j])dp_2[i]=0;
		}if(dp[i]==ans)ans_2+=dp_2[i];
	}
	cout<<ans_2;
	return 0;
}
2024/3/17 14:44
加载中...