浅浅爆了8个WA求调(玄关)
查看原帖
浅浅爆了8个WA求调(玄关)
1242018
aleavf楼主2024/5/10 20:23

思路:将队列分成两部分(从第o个数分开),左边找最长上升子序列,右边找最长下降子序列,将两个相加求出队列最多能留下多少人

#include<bits/stdc++.h>
using namespace std;
int main(){
	int a,x,s=0,sum=0,ans=0;
	cin>>a;
	int b[a+1],c[a+1],d[a+1];
	for(int i=1;i<=a;i++){
		cin>>b[i];
		c[i]=1;
		d[i]=1;
	}
	for(int o=1;o<=a;o++){
		for(int i=1;i<=o;i++){
			for(int j=1;j<i;j++){
				if(b[j]<b[i])	c[i]=max(c[i],c[j]+1);
				if(c[i]>ans){
					ans=c[i];
					x=i;
				}
			}
		}
		for(int i=x+1;i<=a;i++){
			for(int j=x;j<i;j++){
				if(b[j]>b[i]) d[i]=max(d[i],d[j]+1);
				sum=max(d[i],sum);
			}
		}
		s=max(ans+sum-1,s);
	}
	cout<<a-s;
}
2024/5/10 20:23
加载中...