2 条题解
-
0
#include<......>//懒癌复发 #define int long long #define fo(i,a,b) for(int i=a;i<=b;i++) #define rfo(i,a,b) for(int i=a;i>=b;i--) using namespace std; int n,maxn; int a[100001]; int l[100001]; int r[100001]; main(){ cin>>n; fo(i,1,n) l[i]=r[i]=1; fo(i,1,n) cin>>a[i]; fo(i,2,n){ rfo(j,i-1,1){ if(a[j]<a[i]){ l[i]=max(l[i],l[j]+1); } } } rfo(i,n-1,1){ fo(j,i+1,n){ if(a[j]<a[i]){ r[i]=max(r[i],r[j]+1); } } } // fo(i,1,n){ // cout<<l[i]<<' '; // }cout<<endl; // fo(i,1,n){ // cout<<r[i]<<' '; // }cout<<endl; fo(i,1,n){ maxn=max(maxn,l[i]+r[i]-1); } cout<<n-maxn;//这里被坑了 }
-
-4
#include<bits/stdc++.h> using namespace std; int a[101],f[101],ans=INT_MAX; int main(){ ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); int n;cin>>n; for(int i=1;i<=n;i++)cin>>a[i]; for(int k=1;k<=n;k++){ for(int i=1;i<=k;i++){ f[i]=1; for(int j=1;j<i;j++) if(a[j]<a[i])f[i]=max(f[i],f[j]+1); } for(int i=n;i>k;i--){ f[i]=1; for(int j=n;j>i;j--) if(a[j]<a[i])f[i]=max(f[i],f[j]+1); } int t=0; for(int i=k+1;i<=n;i++) if(a[i]<a[k])t=max(t,f[i]); ans=min(ans,n-f[k]-t); } cout<<ans; return 0; }
- 1
信息
- ID
- 371
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- 递交数
- 51
- 已通过
- 31
- 上传者