【题解】洛谷 P14825 纯纯暴 题解
思路
对于一个元素可以删除,则说明该元素在一个单调不降子段中且不为该子段的头尾。那么,我们就可以根据这个结论去找有多少个元素是可以删除的,用总元素减去可删除的元素即为答案
代码
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6+10;
int a[N];
int main(){
int n;
scanf("%d",&n);
int len = 0,del = 0;
for(int i = 1;i <= n;i++){
scanf("%d",&a[i]);
if(a[i] >= a[i-1]){
// 如果当前元素不比前一个元素小,则单调不降子段长度加一
len++;
} else{
// 否则单开一个子段
len = 1;
}
if(len >= 3){
// 上一个元素是可以删除的
del++;
}
}
printf("%d",n-del);
return 0;
}