1 条题解
-
0
设 为以 为结尾LIS的长度,,我们就有这个转移:
初始为 ,因为最坏情况(即 都有 )下以 为结尾的LIS长度就为 。
但最后的答案并不一定为 ,如这组数据:
很明显答案为 ,但 为 不是最优答案。正确答案应为 的最大值。
#include<bits/stdc++.h> using namespace std; const int N=5005,INF=0x3f3f3f3f; int n,a[N],f[N],ans=-INF; int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=n;i++){ for(int j=0;j<i;j++) if(a[j]<a[i]) f[i]=max(f[i],f[j]); ans=max(ans,++f[i]); } printf("%d",ans); return 0; }
需要注意不能在枚举 之前就将 设为 。
- 1
信息
- ID
- 793
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 4
- 标签
- 递交数
- 164
- 已通过
- 73
- 上传者