1 #include<iostream> 2 #include<algorithm> 3 #include<cmath> 4 #include<cstring> 5 #include<cstdio> 6 #include<queue> 7 using namespace std; 8 typedef long long LL; 9 inline int read() 10 { 11 int x=0,f=1;char c=getchar(); 12 while(!isdigit(c)){if(c==‘-‘)f=-1;c=getchar();} 13 while(isdigit(c)){x=x*10+c-‘0‘;c=getchar();} 14 return x*f; 15 } 16 bool ok[50001]; 17 int a[5001],b[5001],f[5001],n,k,maxn,num; 18 int main() 19 { 20 n=read(); 21 for(int i=1;i<=n;i++)a[i]=read(); 22 b[1]=1;f[1]=1; 23 for(int i=1;i<=n+1;i++)//边界定为n+1,这里默认a[i]为0,满足最长下降序列 24 { 25 maxn=0; 26 f[i]=1; 27 for(int j=i-1;j>=1;j--)//从以前的找 28 if(a[i]<a[j])// 29 if(b[j]>maxn)//更新 30 { 31 maxn=b[j]; 32 memset(ok,1,sizeof(ok)); 33 ok[a[j]]=false; 34 f[i]=f[j];//更新方案数 35 } 36 else if(b[j]==maxn && ok[a[j]])// 37 { 38 ok[a[j]]=false; 39 f[i]+=f[j]; 40 } 41 b[i]=maxn+1; 42 } 43 printf("%d %d\n",b[n+1]-1,f[n+1]);//以0为结尾的最长下降序列, 44 return 0; 45 } 46 /* 47 12 48 68 69 54 70 68 64 70 67 78 62 98 87 49 */
今天是10月18日,还有几天就开始初赛了。昨天出月考排名了,本以为会颓废,结果发现排名还凑活:64,按理说这个排名很低了,但是以我这个分数排名这么靠前已经非常出乎我的意外了。希望期中能考好一点。
时间: 2024-10-04 00:03:32