1 条题解
-
1
求不上升子序列个数和最长不上升子序列
因此两遍dp
时间复杂度为
#include <bits/stdc++.h> using namespace std; const int N = 10100; int n; int q[N],f[N],g[N]; int main() { while(cin >> q[n]) n++; int res=0; for(int i=0;i<n;i++) { f[i]=1; for(int j=0;j<i;j++) if(q[i]<=q[j]) f[i]=max(f[i],f[j]+1); res = max(res,f[i]); } cout << res << endl; int cnt = 0; for(int i=0;i<n;i++) { int k=0; while(k<cnt && g[k]<q[i]) k++; g[k]=q[i]; if(k>=cnt) cnt++; } cout <<cnt; return 0; }
- 1
信息
- ID
- 229
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- 10
- 标签
- 递交数
- 8
- 已通过
- 3
- 上传者