首页 > 其他分享 >Insert 1, Insert 2, Insert 3, ...

Insert 1, Insert 2, Insert 3, ...

时间:2023-08-14 18:56:08浏览次数:36  
标签:Insert ... int back st num pos

Insert 1, Insert 2, Insert 3, ...
时间限制(普通/Java):2000MS/4000MS 内存限制:1048576KByte

描述

输入

输出

样例输入

6
1 1 2 2 3 3

样例输出

8

思路
单调栈从左到右遍历数组,遇到 1 则入栈;
若不为 1 则判断能否与最近的 1 匹配,如果能则继续,如果不能,则将栈顶的 1 出栈,并判断下一个 1

单调栈在这里应用是,遍历到一个数,然后查找与之匹配的1的位置,如果匹配的1的位置比当前栈顶元素的小,则表明栈顶的 1 与后面无法匹配,则出栈;

AC代码

#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize(3)


void solve()
{
    int n;
    cin>>n;
    int num;
    vector<vector<int> >p(n+1,vector<int>());
    vector<int>st;
    long long ans=0;
    for(int i=1;i<=n;i++)
    {
        cin>>num;
        if(!(num-1))
        {
            p[num].push_back(i);
            st.push_back(i);
        }
        else
        {
            int pos=0;
            if(!p[num-1].empty())
            {
                pos=p[num-1].back();
                p[num-1].pop_back();
                p[num].push_back(pos);
            }
            while(!st.empty()&&st.back()>pos)st.pop_back();
        }
        ans+=st.size();
    }
    cout<<ans<<endl;
}
signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int _=1;
//    cin>>_;
    while(_--)
    {
        solve();
    }
    return 0;
}

标签:Insert,...,int,back,st,num,pos
From: https://www.cnblogs.com/minz-io/p/17629467.html

相关文章

  • 可怜的不懂日文的孩子们啊...机翻大神正在拯救世界
    原贴:=========================东月西阳全剧本本地化第一版&音频图像补丁Staff:    主翻:J北京V6大仙    后期:爱神    V6大仙的翻译品质在目前来看算不错了,有一定的可读性。目前打算陆续将其他日文剧本通过V6大仙进行本地化。    东月西阳是首个幸运儿(……曾......
  • java之手搓简单ORM框架--SQL的INSERT
    1.手搓简单SQL增删改查框架-插入1.1创建简单类,并使用泛型类,这里可能使用到之间写的三篇知识的内容,如果不了解的小伙伴可以去java高级之泛型java高级之映射java高级之反射当然,前提是必须要把数据库相关连接弄好,这里会专门出一篇java之jdbc现在直接手搓框架开始叭!1.2准备工......
  • Dos常用命令持续更新......
    .盘符切换:盘符+冒号,然后回车.查看当前目录下的所有文件:dir,然后回车.进入当前盘符下文件目录:cd+文件目录路径,然后回车.清理屏幕:cls,然后回车.测试网络联通:ping+ip(或者域名),然后回车.退出终端:exit,然后回车.查看电脑ip:ifconfig,然后回车.创建目录:md......
  • 关于 try... catch
    在逛论坛看见一个有意思的帖子,有点意思,记录下关于"异常捕捉"(trycatch)是否存在悖论?一些我觉得有用的回复,放到下面了,1.当某些错误状况难以完全避免时,try-catch可以用来控制错误扩散范围,防止整个程序崩溃。比如外部系统异常、网络中断等不可控因素。2.对于业务逻辑复杂......
  • 【Oracle】 insert performance issue
    https://blog.iarsov.com/oracle/insert-statement-taking-long-time/--->https://blog.iarsov.com/oracle/sequences-cache-nocache/......
  • 【CV实战】年轻人的第一个深度学习图像分割项目应该是什么样的(Pytorch框架)?...
    我们上次给新手们介绍了第一个合适入门的深度学习CV项目,可阅读【CV实战】年轻人的第一个深度学习CV项目应该是什么样的?(支持13大深度学习开源框架),本次我们再给大家介绍一个新的任务,图像分割,包括数据的处理,模型的训练与测试。作者&编辑|言有三本文资源与图像分割结果展示1项目背......
  • 【CV夏季划】2021年有三AI-CV夏季划出炉,冲刺秋招,从CV基础到模型优化彻底掌握...
    2021年的有三AI-CV夏季划正式发布,并且这也是最后一届由言有三本人直接带领的夏季划小组,仅限于今年。有三AI-CV夏季划是言有三直接一对一带领的深度学习和计算机视觉学习计划小组,目标是在新手入门的基础之上,彻底掌握好CV的重要方向,同时提升模型设计与优化的工程代码经验。什么是有三......
  • 【星球知识卡片】视频分类与行为识别有哪些核心技术,对其进行长期深入学习...
    大家好,欢迎来到我们的星球知识小卡片专栏,本期给大家分享视频分类的核心技术点。作者&编辑|言有三13D卷积视频相对于图像多出了一个维度,而3D卷积正好可以用于处理这个维度,因此也非常适合视频分类任务,不过缺点是计算量比较大,下图展示了一个简单的3D模型。2RNN与LSTM视频和语音......
  • 【星球知识卡片】模型蒸馏的核心技术点有哪些,如何对其进行长期深入学习...
    大家好,欢迎来到我们的星球知识小卡片专栏,本期给大家分享模型蒸馏的核心技术点。作者&编辑|言有三1什么是模型蒸馏一般地,大模型往往是单个复杂网络或者是若干网络的集合,拥有良好的性能和泛化能力,而小模型因为网络规模较小,表达能力有限。利用大模型学习到的知识去指导小模型训练,......
  • 【通知】有三AI更新420页14万字视觉算法工程师成长指导手册,可下载收藏打印...
    各位同学,可还记得我们发布的《深度学习视觉算法工程师成长指导手册》,现在更新了,超过14万字,420页文档,可下载收藏打印,目录如下,文末提供了下载方式。手册简介目前深度学习在图像,语音,NLP领域大展拳脚,不管是本专业还是非本专业的技术人员都有很多人投身这一行,但是学校的学科建设刚刚开始......