首页 > 代码库 > NOIP 考前DP 复习
NOIP 考前DP 复习
POJ 2533 最长不降子序列
1 #include <cstdio> 2 const int Maxn=1010; 3 int a[Maxn],Pos[Maxn],F[Maxn],n,Ans; 4 inline int Max(int x,int y) {return x>y?x:y;} 5 inline int Find(int x) 6 { 7 int l=1,r=Ans,Res; 8 while (l<=r) 9 {10 int mid=(l+r)>>1;11 if (a[Pos[mid]]<x) Res=mid,l=mid+1; else r=mid-1;12 }13 return Res;14 }15 int main()16 {17 scanf("%d",&n);18 for (int i=1;i<=n;i++) scanf("%d",&a[i]);19 F[1]=1; Pos[1]=1; Ans=1;20 for (int i=2;i<=n;i++)21 {22 int t=Find(a[i]);23 Pos[t+1]=i;24 F[i]=t+1;25 Ans=Max(Ans,F[i]);26 }27 printf("%d\n",Ans);28 return 0;29 }
NOIP 考前DP 复习
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。