Problem - 2205D - Codeforces

Problem - 2205D - Codeforces

最终的序列一定是单调递减或者单调递增或者一个谷形

所以我们可以用单调栈从左到右一次单调栈维护每个元素作为谷底时左侧需要删除几个元素

然后从右往左进行单调栈,维护每个元素作为谷底的时候右侧需要删除几个元素

最终两侧的值相加就是这个元素作为谷底的代价

去最小值即可

代码如下:

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
#define int long long
void solve() {
    int n;
    cin>>n;
    vector<int>a(n+1,0);
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    
    vector<int>stl,str,dl(n+1,0),dr(n+1,0);
    stl.push_back(INT_MAX);
    str.push_back(INT_MAX);
    for(int i=1;i<=n;i++){
        while(a[i]>stl.back()){
            stl.pop_back();
        }
        stl.push_back(a[i]);
        dl[i]=i+1-stl.size();
    }
    for(int i=n;i>=1;i--){
        while(a[i]>str.back()){
            str.pop_back();
        }
        str.push_back(a[i]);
        dr[i]=n-i+2-str.size();
    }
    int ans=INT_MAX;
    for(int i=1;i<=n;i++){
        ans=min(ans,dl[i]+dr[i]);
    }
    cout<<ans<<'\n';
}
signed main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    int t=1;
    cin>>t;
    while(t--)solve();
}
相关推荐
烬羽3 小时前
递归老写崩?一个"退回"公式,把回溯题变成填空题
javascript·深度学习·算法
闪电悠米3 小时前
力扣hot100-41.缺失的第一个正数-原地哈希详解
数据结构·算法·哈希算法
星空露珠3 小时前
28种颜色对应名称,
开发语言·数据库·算法·游戏·lua
QXWZ_IA5 小时前
桥梁数字孪生怎么落地?
人工智能·科技·算法·智能硬件·政务
Kel5 小时前
输出层与反分词(Output Layer & Detokenization)
人工智能·算法·架构
陕西企来客5 小时前
2026年7月技术好GEO优化方案:算法适配与内容策略
人工智能·算法·机器学习·技术好geo优化
风栖柳白杨6 小时前
【面试】AI算法工程师_空白自测版本
人工智能·算法·面试
闪电悠米7 小时前
力扣hot100-73.矩阵置零-标记数组详解
算法·leetcode·矩阵
栋***t7 小时前
从“纸质试卷”到“AI智能组卷”,麦塔在线考试系统如何重构出题逻辑?
java·大数据·人工智能·算法·重构
wabs6667 小时前
关于图论【卡码网100.最大岛屿的面积的思考】
数据结构·算法·图论