跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
C++算法

CSP 考试中学生排队问题的 Vector 动态数组解法

综述由AI生成CSP 考试中常遇到动态排队场景,使用 std::vector 替代静态数组可自动管理内存并适应人数变化。展示了基于 vector 的插入、删除及查询操作实现,重点讲解了中间操作对性能的影响及边界检查的重要性,帮助开发者在算法竞赛中高效解决此类动态序列问题。

山野来信发布于 2019/9/12更新于 2026/4/273 浏览
CSP 考试中学生排队问题的 Vector 动态数组解法

CSP 考试中学生排队问题的 Vector 动态数组解法

在 CSP 认证或类似的算法竞赛中,处理动态变化的队列是常见考点。相比于固定大小的数组,std::vector 能自动管理内存,非常适合这种人数不确定的场景。

下面是一个典型的实现思路。我们不需要预先分配最大容量,而是根据实际输入动态调整。

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

int main() {
    // 模拟学生编号
    vector<int> students;
    int n, m;
    
    // 读取总人数和操作次数
    if (!(cin >> n >> m)) return 0;

    // 初始化队伍
    for (int i = 1; i <= n; ++i) {
        students.push_back(i);
    }

    // 处理操作
    while (m--) {
        int op, pos;
        cin >> op >> pos;
        if (op == 1) {
            // 插入操作:在第 pos 个位置前插入新学生(假设新学生编号为当前最大值 +1)
            // 注意:vector 插入会移动后续元素,复杂度 O(N)
            students.insert(students.begin() + pos - 1, students.size() + 1);
        } else if (op == 2) {
            // 删除操作:移除第 pos 个位置的学生
            if (pos >= 1 && pos <= students.size()) {
                students.(students.() + pos - );
            }
        }   (op == ) {
            
             (pos >=  && pos <= students.()) {
                cout << students[pos - ] << endl;
            }
        }
    }
     ;
}
erase
begin
1
else
if
3
// 查询操作:输出第 pos 个学生的编号
if
1
size
1
return
0

这里有个细节要注意:vector 的中间插入和删除涉及内存移动。如果数据量极大且频繁操作,可能需要考虑链表或其他结构,但在常规 CSP 题目规模下,Vector 是最方便的选择。

另外,记得检查边界条件,比如 pos 是否越界,避免程序崩溃。实际调试时,加上断言或者简单的范围判断能节省不少排查时间。

通过这种方式,我们可以灵活应对排队人数的变化,无需担心数组溢出或浪费空间。

目录

  1. CSP 考试中学生排队问题的 Vector 动态数组解法
  • 💰 8折买阿里云服务器限时8折了解详情
  • 💰 8折买阿里云服务器限时8折购买
  • 🦞 5分钟部署阿里云小龙虾了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 前端视角下的 Nginx 反向代理实战指南
  • 基于强化学习Q-learning的无人机三维路径规划原理与MATLAB实现
  • AI 助力六花直装 V8.3.9 自动化开发与测试
  • 手机本地部署 AI 大模型指南:Llama 3 与 Phi-3 实战
  • 机器人 DH 参数模型与正运动学
  • 内网环境下通过代理自动下载模型
  • Web Streams 的隐性开销与 JavaScript 流处理新方案
  • C++ Vector 容器详解
  • Harness 工程:构建 AI 智能体可靠运行的系统指南
  • 前端 rem 自适应布局方案详解与实战避坑
  • OpenClaw 安装后无法启动?Gateway 服务故障排查指南
  • VSCode Git 插件详解与配置指南
  • 命令行大模型交互工具:MCPHost 实战指南
  • llama-recipes 项目架构设计解析
  • AIGC 产品经理面试高频题解析与参考答案
  • Vue 组件 Prop 验证与枚举值最佳实践
  • Java 电子招投标采购系统核心功能与业务流程设计
  • AI 大模型驱动的软件开发全流程变革:从需求到运维
  • 2024 年十大开源渗透测试工具详解
  • OpenViking 实战:AI 代理上下文数据库部署与应用

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online