首页 > 其他分享 >2024/2/5~2024/2/11

2024/2/5~2024/2/11

时间:2024-02-05 15:44:48浏览次数:23  
标签:11 map int auto cin 2024 数组 now

小红数组操作

题目链接:https://ac.nowcoder.com/acm/contest/74362/D

题目描述

小红拿到了一个数组,初始数组为空,她希望你实现以下两种操作:
1.输入 1 \(x\) \(y\) ,将 \(x\) 插入在元素 \(y\) 的右边。保证此时数组中没有元素等于 \(x\) ,且数组中存在一个 \(y\) 。特殊的,如果将 \(x\) 插入在数组的最左边,则 \(y\)=0
2. 输入 2 \(x\) ,将元素 \(x\) 删除。

输入描述:

第一行输入一个正整数 \(q\) ,代表操作次数。
链接:https://ac.nowcoder.com/acm/contest/74362/D
来源:牛客网

接下来的 \(q\) 行,每行输入两个整数 \(2\) \(x\) 或者三个整数 \(1\) \(x\) \(y\),代表一次操作。操作含义如题目说明。
\(1\)≤q≤\(2\)x\(10^5\)
\(1\)≤\(x\)≤\(10^9\)
\(1\)≤\(y\)≤\(10^9\)
链接:https://ac.nowcoder.com/acm/contest/74362/D
来源:牛客网

输出描述:

第一行输出一个整数\(n\),代表最终数组的大小。
第二行输出\(n\)个正整数,代表最终的数组。

用两个map分别存一下当前数字左侧是谁和右侧是谁,在map中进行增删,再使用一个队列,将最终的某个map(键指左侧或右侧那个都可以),递归的推进队列,然后输出
注意:此处的两个map仅在增删时同时使用,最终构造数组时只用其中一个map即可;

也可以使用哈希表的方法进行前后向模拟,哈希的方法是直接使用map的方法的1/4时间复杂度

#include<bits/stdc++.h>
using namespace std;
using ll= long long;
constexpr int MOD=998244353;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int q,pos{0};
    cin>>q;
    map<int,int> f,b;
    deque<int> dq;
    while(q--){
        int now;
        cin>>now;
        if(now==1){
            pos++;
            int x,y;
            cin>>x>>y;
            if(b.count(y)>0){
                f[b[y]]=x;
                f[x]=y;
                b.insert({x, b[y]});
                b[y]=x;

            }
            else{
                f.insert({x, y});//键指左侧数
                b.insert({y, x});//键指右侧数
            }
            //for(auto [l,r]:f){
            //    cout<<"f:"<<l<<" "<<r<<"\n";
            //}
            //for(auto [l,r]:b){
            //    cout<<"b:"<<l<<" "<<r<<"\n";
            //}
            //cout<<"-------\n";
        }
        else{pos--;
            int x;
            cin>>x;
            f[b[x]]=f[x];
            b[f[x]]=b[x];
            f.erase(x);
            b.erase(x);
        }
    }
    auto kpl = *b.begin();
    auto now = kpl.second;
    while(pos--){
        dq.push_back(now);
        now=b[now];
    }
    //for(auto [l,r]:b){
    //    dq.push_back(r);
    //}
    cout<<dq.size()<<"\n";
    for(auto i:dq){
        cout<<i<<" ";
    }
}

标签:11,map,int,auto,cin,2024,数组,now
From: https://www.cnblogs.com/manjuan/p/18008279

相关文章

  • DPDK-22.11.2 [六] RSS receive side scaling 网卡分流机制
    这个的作用就是为了提高性能。当分析网络数据时,可以为网口提供多个接收队列,每个cpu处理一个队列。如果每条队列是独立的,那么就可以很好的并发。这里有两个问题,一个是数据需要平均的分配到每个队列;二是同一组数据需要分配到同一个队列。rss就是这个作用,可以设定以ip进行区分,或......
  • P1122 最大子树和
    原题链接前记我觉得这道题用树形dp解释不太妥当思路当一道题无法用直观的模拟来实现的时候,我们要换个思路1.对于一个有\(N\)个节点,\(N-1\)条边的图,我们可以将其变为随便抓取一个节点为根节点的树的问题2.就此我们发现一个事实,对于任意树而言,其答案最大值一定是某个节......
  • 2024年重启人生要做的100件事,记录待办清单并打卡完成
    新年伊始,很多人都怀揣着改变自己、追求更美好生活的期望,渴望在2024年做一些有意义的事情,为自己的人生注入新的活力。为了帮助大家更好地实现这些目标,小编整理了一份2024年重启人生要做的100件事待办清单,涵盖了健康美丽、自我提升、享受生活、诗与远方、奖励自己等五个方面。这些......
  • Automotive IQ第14届年度汽车网络安全大会将于2024年在底特律举行
    在接受《AutomotiveIQ》独家采访时,福特汽车公司汽车和移动网络安全高级顾问DarrenShelcusky深入探讨了符合UNECER155/R156法规的关键因素,揭示了汽车行业满足这些严格法规的过程。从区分网络安全标准和法规到详细说明其对主机厂和更广泛的汽车网络安全领域的影响,Darren提供了综......
  • (python)做题记录||2024.2.4||题目是codewars的【 All Balanced Parentheses】
    题目链接:https://www.codewars.com/kata/5426d7a2c2c7784365000783/python我的解决方案:defbalanced_parens(n):#Yourcodehere!used_l=[Falseforiinrange(n)]used_r=[Falseforiinrange(n)]answers=[]defprocess(answer):iflen(a......
  • pkuwc2024 & wc2024
    虽然去年pkusc拿过优异了,但是还是去旅游了一下。不想按照严格的时间线写了,想到什么写什么吧。坐高铁去,发现zph和miao22也在这一车次,但是和被8-9分割了。CQ的地铁感觉没有几段是在地下的,全是在天上跑,还有从楼里穿过的,还是比传统地铁好玩的。但下来就不好玩了,拎着箱子......
  • 2024年碰到这三条红线的电车,坚决不买!
    文|AUTO芯球作者|雷歌我最近有天夜里打车打到一辆威马汽车,车里乌漆麻黑一片,我好奇地问,“师傅你中控屏咋不打开,太黑了。”师傅带有怨气地吐槽:“X,威马破产了,车机也停了”。车子买的威马汽车,房子买的恒大期房,股票放在了大A,大概是这代年轻人最惨的事情了。这是威马汽车在2023年10月......
  • c++11的左值 右值的笔记
    在C++11的程序中,所有的值必须属于左值,将亡值,纯右值之一。将忘值则是c++11新增的跟右值引用相关的表达式,这样表达式通常是将要被移动的对象(以为他用),比如返回右值引用T&&的函数返回值,std::move的返回值,或者转换为T&&的类型的转换函数的返回值。而剩余的,可以标识函数、对象的值都属......
  • [解决办法]笔记本win11 win10系统亮度自动降低 关闭自动对比度自动亮度自适应
    https://www.bilibili.com/video/BV18K411k7AJ解决办法整理:控制面板:控制面板\所有控制面板项\电源选项\编辑计划设置这里的显示里面有的电脑有自动降低亮度相关设置英特尔显卡管理面板-功率菜单,节能功能关闭。(微软商店可以装这个软件)首先,他节约不少多少点能服务-......
  • windows11 实现 远程控制
    问题:需要解决的问题是,放假回到家之后,需要远程使用公司的电脑。所以需要在原来的电脑上进行远程控制的设置。 首先对于被控制电脑的设置。开始--->设置--->远程桌面。 对于被控制电脑的要求就是有这些。 接下来是对于控制电脑如何设置才能控制这台电脑。 ......