4 条题解
-
1
#include<cstdio> #include<algorithm> #include<iostream> using namespace std; int n,t,a[1005],b[1005],c[1005],bj[1005],bj2,m=-1; int main() { scanf("%d",&n); for(int i=1;i<=n;i=i+1)scanf("%d",&a[i]); for(int i=1;i<=n;i=i+1) { b[i]=1; for(int j=1;j<i;j=j+1) { if((a[i]>a[j])&&(b[i]<(b[j]+1))) { b[i]=b[j]+1; } } } for(int i=n;i>=1;i=i-1) { c[i]=1; bj2=0; for(int j=i+1;j<=n;j=j+1) { if((a[i]>a[j])&&(c[i]<(c[j]+1))) { c[i]=c[j]+1; } } m=max(b[i]+c[i],m); } printf("%d\n",m-1); return 0; }
-
0
#include<bits/stdc++.h> using namespace std; const int N=1005; int a[N],dp[N],maxn=-114514,n; int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } for(int i=1;i<=n;i++){ dp[i]=1; for(int j=1;j<i;j++){ if(a[j]<a[i]){ dp[i]=max(dp[i],dp[j]+1); } maxn=max(maxn,dp[i]); } } for(int i=1;i<=n;i++){ for(int j=1;j<i;j++){ if(a[j]>a[i]){ dp[i]=max(dp[i],dp[j]+1); } } maxn=max(maxn,dp[i]); } cout<<maxn; }
-
0
/**************************************** Note: ****************************************/ #include <queue> #include <math.h> #include <stack> #include <vector> #include <stdio.h> #include <iostream> #include <vector> #include <iomanip> #include <string.h> #include <cstring> #include <algorithm> #define int long long using namespace std; const int N = 1e6 + 10; const int INF = 0x3f3f3f3f; int n; int a[1005]; int dp[1005]; int maxn = -1; signed main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n; for(int i=1;i<=n;i++) cin >> a[i]; for(int i=1;i<=n;i++){ dp[i] = 1; for(int j=1;j<i;j++) if(a[j]<a[i]) dp[i] = max(dp[i],dp[j] + 1); maxn = max(maxn,dp[i]); } for(int i=1;i<=n;i++){ for(int j=1;j<i;j++) if(a[j]>a[i]) dp[i] = max(dp[i],dp[j] + 1); maxn = max(maxn,dp[i]); } cout << maxn << endl; return 0; }
-
0
合唱队形,模板中的模板
#include<iostream> #include<cstring> #define h using #define uh namespace #define e std h uh e; struct node{ int x,up,down; }a[1005]; int n,maxx; int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i].x; a[i].up=1,a[i].down=1; } for(int i=1;i<=n;i++) for(int j=1;j<i;j++) if(a[i].x>a[j].x) a[i].up=max(a[i].up,a[j].up+1); for(int i=n-1;i>=1;i--) for(int j=n;j>i;j--) if(a[i].x>a[j].x) a[i].down=max(a[i].down,a[j].down+1); for(int i=1;i<=n;i++){ maxx=max(maxx,a[i].up+a[i].down-1); } cout<<maxx<<endl; } // nb AC
- 1
信息
- ID
- 1413
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 389
- 已通过
- 101
- 上传者