当前位置: 首页 > news >正文

栈,优先级队列,map,set

文章目录

    • 题目解析
    • 代码
  • 优先级队列
    • 题解
    • 代码
  • map
    • 题解
    • 代码
  • set
    • 题解
    • 代码

在这里插入图片描述

题目解析

1.先把元素push进栈中,如果栈非空并且栈中的元素按顺序和k相等就出栈,直到栈为空或者k != sk.top()

代码

#include<iostream>
#include<stack>
#include<vector>
using namespace std;

int main()
{
    stack<int> sk;
    int n = 0;
    cin >> n;
    vector<int> v(n);

    for (int i = 0; i < n; i++) cin >> v[i];

    int k = 1;
    for (int i = 0; i < n; i++)
    {
        sk.push(v[i]);
        while(!sk.empty()&&k == sk.top())
        {
            sk.pop();
            k++;
        }
    }

    if (sk.empty())
    {
        cout << "Yes" << '\n';
    }
    else
    {
        cout << "No" << '\n';
    }

    return 0;
}

优先级队列

在这里插入图片描述

题解

1. 用sum统计篮子的重量
2. 是1就push,增加sum
3. 是2就减少sum,pop,并且要判空,非空才能减,不然优先级对列会报错

代码

#include<iostream>
#include<stack>
#include<vector>
#include<queue>
using namespace std;

const int N = 1e5 + 10;
using ll = long long;
int main()
{
    int q;
    cin >> q;
    priority_queue<ll> pq;
    ll sum = 0;
    while(q--)
    {
        int x = 0;
        cin >> x;
        if(x == 1)
        {
            int y;
            cin >> y;
            pq.push(y);
            sum += y;
        }
        else if( x == 2)
        {
            if(!pq.empty()) 
            {
                sum -= pq.top();
                pq.pop();
            }
        }
    }
    cout << sum;

    return 0;
}

map

在这里插入图片描述

题解

1. map统计字符串出现的次数
2. vector可以把字符串按顺序输出
3. 第一次出现就插入到vector中

代码

#include<iostream>
#include<vector>
#include<map>
#include<string>
using namespace std;

const int N = 1e5 + 10;
using ll = long long;

void slove()
{
    int n;
    cin >> n;
    map<string,int> p;
    // map是有序的
    vector<string> v;
    // 表示字符串出现的顺序
    for(int i = 0;i < n;i++)
    {
        string s; 
        cin >> s;
        if(p.count(s)) p[s]++;
        else 
        {
            v.push_back(s);
            p[s] = 1;
        }
    }

    for(auto& x : v)
    cout << x << " " << p[x] << '\n';
}
int main()
{
    int t = 0;
    cin >> t;

    while(t--)
    slove();

    return 0;
}

set

在这里插入图片描述

题解

1. 把数插入到set中,set会自动帮我们排好序的,然后输出就行了

代码

#include<iostream>
#include<vector>
#include<set>
#include<algorithm>

using namespace std;

int main()
{
    int n;
    cin >> n;
    set<int> st;
    for(int i = 0;i < n;i++)
    {
        int x;
        cin >> x;
        st.insert(x);
    }

    for(auto x : st) cout << x << " ";

    return 0;
}

相关文章:

  • Python——生成AIGC图像
  • 使用 AIStor 和 OpenSearch 增强搜索功能
  • java项目之学术成果管理系统源码(ssm+前端+mysql)
  • 基于契约理论的竞争性组织数据共享安全激励机制matlab模拟与仿真
  • 使用Python结合`stable-baselines3`库(包含PPO和TD3算法)以及`gym`库来实现分层强化学习的示例代码
  • 0.1 量海航行:量化因子列表汇总(持续更新)
  • 项目设置内网 IP 访问实现方案
  • leecode 刷题感悟-- 哈希表
  • Kafka Connect 功能介绍
  • 本地部署 DeepSeek + Dify,构建自己的AI能力
  • 为AI聊天工具添加一个知识系统 之113 详细设计之54 Chance:偶然和适配 之2
  • 云计算如何解决延迟问题?
  • 数字内容体验驱动用户参与度提升的关键路径
  • 日语学习-日语知识点小记-构建基础-JLPT-N4N5阶段(10): になります :表示从一种状态转变为另一种状态,“变得……”“成为……”
  • Spark提交任务
  • Java中的常用类 --String
  • 备战蓝桥杯 -牛客
  • 全志A133 android10 适配SLM770A 4G模块
  • 编辑过程使用
  • 大模型高效注意力机制全解析:FlashAttention 与稀疏注意力实战
  • 做正版电子书下载网站/seo一个月工资一般多少
  • 大朗做网站公司/三个关键词介绍自己
  • 网页制作素材网站推荐/如何优化关键词排名到首页
  • 龙华做网站联系电话/发稿
  • wordpress站点地图样式/适合40岁女人的培训班
  • c 网站开发部署/产品营销