90分求救!第4个点过不了
查看原帖
90分求救!第4个点过不了
442725
余歆楼主2021/12/26 16:57

上代码

#include<bits/stdc++.h>
#define gc getchar()
#define ll long long
#define For(i,j,k) for(register int i = j; i <= k; i++)
#define foR(i,j,k) for(register int i = j; i >= k; i--)
#define mp(i,j) makenpair(i,j) 
#define re register
#define il inline
using namespace std;
inline int read(){
    int x = 0;
    char ch = gc;
    while(!isdigit(ch)) ch =gc;
    while(isdigit(ch)) x = (x<<1)+(x<<3)+(ch^48),ch = gc;
    return x;
}
int n,a[101],d[101],len,maxx;
struct jj{
	int l,r,sum;
}na[101];
int main(){
	n = read();
	For(i,1,n) a[i] = read();
	d[1] = a[1];
	len = 1;
	For(i,2,n){
		if(d[len] < a[i]) d[++len] = a[i];
		else{
			int k = lower_bound(d+1, d+len+1,a[i]) - d;
			d[k] = a[i];
		}
		na[i].l = len;
	}
	len = 1;
	d[1] = a[n];
	foR(i,n-1,1){
		if(d[len] < a[i]) d[++len] = a[i];
		else{
			int k = lower_bound(d+1, d+len+1,a[i]) - d;
			d[k] = a[i];
		}
		na[i].r = len;
	}
	For(i,1,n){
		na[i].sum = na[i].l + na[i].r -1;
		maxx = max(maxx, na[i].sum);
	}
	cout<< n - maxx;
return 0;
}

测试数据

20
130 140 150 160 170 180 190 200 210 220 221 222 223 224 225 226 227 228 229 230

应为0,我却跑的1。。。。。 哪来的1??

2021/12/26 16:57
加载中...