0411代码,备战蓝桥杯基础数据结构

2024-04-12 04:04

本文主要是介绍0411代码,备战蓝桥杯基础数据结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.单链表

#include<algorithm>
#include<iostream>
#include<cstring>
#include<queue>
#include<cmath>using namespace std;
const int N = 1000010;int h,e[N],ne[N],idx;
int m;void addhead(int x){e[idx] = x;ne[idx] = h;h = idx ++;
}void add(int k,int x){e[idx] = x;ne[idx] = ne[k];ne[k] = idx ++;
}void delete1(int k){ne[k] = ne[ne[k]];
}int main()
{cin>>m;char op[2];h = -1;while(m--){scanf("%s",&op);if(op[0] == 'H'){int x;cin>>x;addhead(x);}if(op[0] == 'I'){int k,x;cin>>k>>x;add(k-1,x);}if(op[0] == 'D'){int k;cin>>k;if (k == 0) h = ne[h];//删除头节点要特判!!!! delete1(k-1);}}	for(int i=h;i!=-1;i=ne[i]){int j = e[i];cout<<j<<' ';}return 0;
}

2.栈:读入string要用cin

#include<algorithm>
#include<iostream>
#include<cstring>
#include<queue>
#include<cmath>using namespace std;
const int N = 1000010;int m;
int st[N];
int tt = -1;int main()
{cin>>m;while(m--){string op;cin>>op;if(op == "push"){int x;cin>>x;st[++tt] = x;}if(op == "empty"){if(tt==-1) cout<<"YES"<<endl;else cout<<"NO"<<endl;}if(op == "query"){cout<<st[tt]<<endl;}if(op == "pop"){tt--;}}return 0;} 

3.队列

#include<algorithm>
#include<iostream>
#include<cstring>
#include<queue>
#include<cmath>using namespace std;
const int N = 1000010;int m;
int q[N];
int tt = -1,hh;int main()
{cin>>m;while(m--){string op;cin>>op;if(op == "push"){int x;cin>>x;q[++tt] = x;}if(op == "empty"){if(hh>tt) cout<<"YES"<<endl;else cout<<"NO"<<endl;}if(op == "query"){cout<<q[hh]<<endl;}if(op == "pop"){hh++;}}return 0;} 

4.单调栈

#include<algorithm>
#include<iostream>
#include<cstring>
#include<queue>
#include<cmath>using namespace std;
const int N = 1000010;int n;
int st[N];
int tt;int main()
{cin>>n;for(int i=0;i<n;i++){int x;cin>>x;while(tt && st[tt] >= x){tt--;}if(tt) cout<<st[tt]<<' ';//第一个数序号是0,输出-1 else cout<<"-1"<<' ';st[++tt] = x;}return 0; 
}

5.单调队列:注意第二次更新hh=0,tt=-1

#include<algorithm>
#include<iostream>
#include<cstring>
#include<queue>
#include<cmath>using namespace std;
const int N = 1000010; int n,k;
int q[N],hh,tt=-1;
int a[N];int main()
{cin>>n>>k;for(int i=0;i<n;i++) cin>>a[i];//找最小值 for(int i=0;i<n;i++){while(hh<=tt && i-k+1 > q[hh]){hh++;//q数组是下标 }while(hh<=tt && a[q[tt]] >= a[i]){tt--;//则不可能作为答案输出 } q[++tt] = i;//要先添加进来,在窗口里,可能作为答案输出 if(i >= k-1){cout<<a[q[hh]]<<' ';}}cout<<endl;//找最大值int hh=0,tt=-1;for(int i=0;i<n;i++){while(hh<=tt && i-k+1 > q[hh]){hh++;//q数组是下标 }while(hh<=tt && a[i] >= a[q[tt]]){tt--;//则不可能作为答案输出 } q[++tt] = i;//要先添加进来,在窗口里,可能作为答案输出 if(i >= k-1){cout<<a[q[hh]]<<' ';}} return 0; } 

这篇关于0411代码,备战蓝桥杯基础数据结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/896047

相关文章

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip