1 solutions

  • 2
    @ 2024-7-19 15:38:19
    #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