1 条题解
-
0
#include<bits/stdc++.h> using namespace std; const int N=1e2+10; int t,n,dp[N],len,a[N]; void Memset() { memset(dp,0,sizeof(0)); len=0; } int main() { scanf("%d",&t); while(t--) { int ans=0; scanf("%d",&n); for(int i=1;i<=n;++i) { scanf("%d",&a[i]); } Memset(); dp[++len]=a[1]; for(int i=2;i<=n;++i) { if(a[i]<dp[len]) { dp[++len]=a[i]; } else { int upd=lower_bound(dp+1,dp+len+1,a[i],greater<int>())-dp; dp[upd]=a[i]; } } ans=max(ans,len); Memset(); dp[++len]=a[n]; for(int i=n-1;i>=1;--i) { if(a[i]<dp[len]) { dp[++len]=a[i]; } else { int upd=lower_bound(dp+1,dp+len+1,a[i],greater<int>())-dp; dp[upd]=a[i]; } } ans=max(ans,len); printf("%d\n",ans); } return 0; }
- 1
信息
- ID
- 3120
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 1
- 标签
- 递交数
- 85
- 已通过
- 36
- 上传者