1 solutions
-
2
#include<bits/stdc++.h> #define pr printf #define sc scanf #define int long long using namespace std; int n; int up[105]={},down[105]={}; int a[105]={}; int ans=0; signed main(){ sc("%lld",&n); for(int i=1;i<=n;i++) sc("%lld",&a[i]); //输入 fill(up+1,up+n+1,1); fill(down+1,down+n+1,1); //初始化 for(int i=2;i<=n;i++) for(int j=1;j<i;j++) if(a[j]<a[i]) up[i]=max(up[i],up[j]+1); //统计上升序列 for(int i=n-1;i>=1;i--) for(int j=n;j>i;j--) if(a[j]<a[i]) down[i]=max(down[i],down[j]+1); //统计下降序列 for(int i=1;i<=n;i++) ans=max(ans,up[i]+down[i]-1); //求和,减1是我试出来的 pr("%lld\n",n-ans); return 0; }
没想到dfs怎么做...
- 1
Information
- ID
- 91
- Time
- 1000ms
- Memory
- 125MiB
- Difficulty
- 3
- Tags
- # Submissions
- 58
- Accepted
- 26
- Uploaded By