acm新手小白必看系列之(10)——队列精讲及例题
acm新手小白必看系列之(10)——队列精讲及例题
队列其实是很复杂的,有很多种队列的情况
下面只讲基础能用上的
队列:先进先出
在这里,我将引入两个整型变量head和tail。head用来记录队列的队首(即第一位),tail用来记录队列的队尾(即最后一位)的下一个位置。你可能会问:为什么tail不直接记录队尾,却要记录队尾的下一个位置呢?这是因为当队列中只剩下一个元素时,队首和队尾重合会带来一些麻烦。我们这里规定队首和队尾重合时,队列为空
如果现在有9个数,9个数全部放入队列之后head=1;tail=10;此时head和tail之间的数就是目前队列中“有效”的数。如果要删除一个数的话,就将head++就OK了,这样仍然可以保持head和tail之间的数为目前队列中“有效”的数。这样做虽然浪费了一个空间,却节省了大量的时间,这是非常划算的。新增加一个数也很简单,把需要增加的数放到队尾即q[tail]之后再tail++就OK啦。
我们来小结一下,在队首删除一个数的操作是head++;
在队尾增加一个数(假设这个数是x)的操作是q[tail]=x;tail++;。
队列将是我们今后学习广度优先搜索以及队列优化的Bellman-Ford最短路算法的核心数据结构。所以现在将队列的三个基本元素(一个数组,两个变量)封装为一个结构体类型,如下
struct queue{int data[100];//队列的主体,用来存储内容 int head;//队首 int tail;//队尾};}
- 简单队列很简单下面来实践一下
- 1.解密
解密规则。规则是这样的:首先将第1个数删除,紧接着将第2个数放到这串数的末尾,再将第3个数删除并将第4个数放到这串数的末尾,再将第5个数删除…直到剩下最后一个数,将最后一个数也删除。按照刚才删除的顺序,把这些删除的数连在一起即为正确数列
输入 6 3 1 7 5 8 9 2 4
输出 6 1 5 9 4 7 2 8 3
#include <stdio.h>int main(){int q[102]={0,6,3,1,7,5,8,9,2,4},head,tail;int i;//初始化队列head=1;tail=10; //队列中已经有9个元素了,tail执向的队尾的后一个位置while(head<tail) //当队列不为空的时候执行循环{//打印队首并将队首出队printf("%d ",q[head]);head++;//先将新队首的数添加到队尾q[tail]=q[head];tail++;//再将队首出队head++;}getchar();getchar();return 0;}
博客:详细解释队列附带例题
作为小白精讲最后一节没有习题~~~O(∩_∩)O哈哈哈~
即将推出acm新手进阶必看系列(1)——链表精讲即例题
往期回顾
1.溶液配制
小蓝虽然有很多溶液,但是还是没有办法配成想要的溶液,因为万一倒错了就没有办法挽回了。因此,小蓝到网上下载了一个溶液配置模拟器。模拟器在计算机中构造一种虚拟溶液,然后可以虚拟地向当前虚拟溶液中加入一定浓度、一定体积的这种溶液,模拟器会快速地算出倒入后虚拟溶液的浓度和体积。当然,如果倒错了可以撤销。
模拟器的使用步骤如下:
1)为模拟器设置一个初始体积和浓度 V0、C0%。
2)进行一系列操作,模拟器支持两种操作:
P(v,c)操作:表示向当前的虚拟溶液中加入体积为 v 浓度为 c 的溶液;
Z 操作:撤销上一步的 P 操作。
Input
第一行两个整数,表示 V0 和 C0,0≤C0≤100;
第二行一个整数 n,表示操作数,n≤10000;
接下来 n 行,每行一条操作,格式为:P_v_c 或 Z。
其中 _ 代表一个空格,当只剩初始溶液的时候,再撤销就没有用了,这时只输出初始的体积和浓度。
任意时刻质量不会超过 2^31 -1。
Output
n 行,每行两个数 Vi,Ci,其中 Vi 为整数,Ci 为实数(保留 5 位小数)。
其中,第 i 行表示第 i 次操作以后的溶液体积和浓度。
Sample Input
100 100
2
P 100 0
Z
Sample Output
200 50.00000
100 100.00000
Hint
例子输入2:
100 100
2
Z
P 100 0
例子输出2:
100 100.00000
200 50.00000
//当只剩初始溶液的时候,再撤销就没有用了,这时只输出初始的体积和浓度。
//注意这句话! 用栈模拟很方便的
#include <bits/stdc++.h>
using namespace std;
struct sa
{int v;double c;
};
stack<sa>vis;
int main()
{ ios::sync_with_stdio(false);string p;int v0,n,v1,v10,v20;double c0,c1,c10,c20;cin>>v0>>c0;v20=v0;c20=c0;cin>>n;for(int i=1;i<=n;i++){cin>>p;if (p=="P"){cin>>v1>>c1;vis.push({v1,c1});c0=(v0*c0*0.01+v1*c1*0.01)/(v0+v1);c0=c0*100.00;v0=v0+v1;printf("%d %.5lf\n",v0,c0);}else{if (vis.empty()){printf("%d %.5lf\n",v20,c20);continue;}sa tmp=vis.top();vis.pop();v10=tmp.v;c10=tmp.c;c0=((v0*c0*0.01-v10*c10*0.01)/(v0-v10))*100.00;v0=v0-v10;printf("%d %.5lf\n",v0,c0);}}return 0;
}
好了,acm新手系列完结撒花O(∩_∩)O~
即将推出acm新手进阶必看系列(1)——链表精讲即例题
acm新手小白必看系列之(10)——队列精讲及例题相关推荐
- acm新手小白必看系列之(5)——枚举进阶例题精讲
acm新手小白必看系列之(5)--枚举进阶例题精讲 1.牛奶碑文(暴力枚举) 小伟暑假期间到大草原旅游,在一块石头上发现了一些有趣的碑文.碑文似乎是一个神秘古老的语言,只包括三个大写字母 C.O 和 ...
- acm新手小白必看系列之(8)——二分法精讲及例题
acm新手小白必看系列之(8)--二分法精讲及例题 二分,分的是答案,直接在答案在的区间范围中二分,分出一个值,就判断是不是答案,并进行转移 如果已知候选答案的范围(min,max)(单调有序),(无 ...
- acm新手小白必看系列之(9)——栈精讲及例题
acm新手小白必看系列之(9)--栈精讲及例题 先进栈后出栈 可以把栈想象成一个上端开口的杯子.... 栈只能定义为在一端进行插入和删除操作 1.程序员问题 程序员输入程序出现差错时,可以采取以下的补 ...
- acm新手小白必看系列之(3)——暴力枚举精讲及例题
acm新手小白必看系列之(3)--暴力枚举精讲及例题 暴力枚举说白了就是列举所有情况,然后一个一个排查. 这节多说无益直接上题(这节假的精讲) 1·大乐透 在小明曾经玩过的一种对号码的纸牌游戏(乐透) ...
- acm新手小白必看系列之(7)——快速幂取模精讲及例题
acm新手小白必看系列之(7)--快速幂取模精讲及例题 性质1:(a+b)%m=(a%m+b%m)%m 性质2:(ab)%m=(a%mb%m)%m 给你一个数a,让你求其b次连乘后的结果 当b很小时, ...
- acm新手小白必看系列之(1)——二维数组及结构体精讲附带例题
*acm新手小白必看系列之(1)--二维数组及结构体 ** c++准备工作** (可能小白像我一样也是学习的c语言) 万能头文件,放在第一行 #include<bits/stdc++.h> ...
- 新手python爬虫代码_新手小白必看 Python爬虫学习路线全面指导
爬虫是大家公认的入门Python最好方式,没有之一.虽然Python有很多应用的方向,但爬虫对于新手小白而言更友好,原理也更简单,几行代码就能实现基本的爬虫,零基础也能快速入门,让新手小白体会更大的成 ...
- 面试必看:java面试考点精讲视频教程
面试必看:java面试考点精讲视频教程 Java作为目前比较火的计算机语言之一,连续几年蝉联最受程序员欢迎的计算机语言榜首,因此每年新入职Java程序员也数不胜数.很多java程序员在学成之后,会面临 ...
- 计算机新手教程装系统,新手小白必看电脑重装系统教程 四种方法至少会一种就够用!...
电脑买来时间久了,就会出来卡顿.蓝屏等很多问题.你的电脑有这些问题吗?当电脑出现这些问题时,我们该怎么做呢?当然就是给电脑重装系统,那么你会给电脑重装系统吗?小白必看的电脑重装系统教程哦! 给电脑装系 ...
最新文章
- 消除左递归实验代码_「leetcode」108. 构造二叉搜索树【递归】【迭代】详解!
- 采集音频和摄像头视频并实时H264编码及AAC编码[转]
- SSH客户端字符集编码设置
- python 相关性分析_数据分析---用Python进行相关性分析(兼谈假设检验)
- 简述力法计算弹性固定无铰拱的原理_《隧道结构体系设计》PPT课件.ppt
- 终于快忙出头了,开了个FTP给大家用[mikespook]
- message There is no Action mapped for namespace [/] and action name [login] associated with context
- 机器学习之tensorflow出现的一些问题
- *【牛客 - 315D】打车(贪心,同优则立证明法)
- 【数学】Floating-Point Hazard
- 分布式理论-CAP定理
- [BZOJ1135][P3488][POI2009]LYZ[线段树+Hall定理]
- 关于预编绎网站的问题[已预编译此应用程序的错误]
- 新颖性搜索(Novelty Search,NS)算法详解与实现
- 「leetcode」501. 二叉搜索树中的众数【暴力统计】【中序遍历】详解
- 2022秋招面经(C++软开)
- 五大媒体播放器的Andr​​oid
- jboss 服务器配置文件,Apache jboss 集群详细配置
- Elastic-Job (二)实现Dataflow作业
- php时间戳,日期时间转换及使用大全
热门文章
- class字节码反编译操作过程
- JavaScript里的event
- 使用谷歌插件屏蔽固定广告
- “生鲜蔬”APP的设计与实现
- 一企一技术研发中心 山东一企一技术
- MAMP Pro 5.3 Shark 鲨鱼中文特别版 Mac 本地 PHP 服务器搭建工具完美版
- Ubuntu ens33网卡无ip
- GPT-4 版“贾维斯”诞生,国外小哥用它 4 分钟创建网站、聊天就能创建 GitHub repo.........
- 证券公司集中交易安全管理技术指引
- Docker世界 -- 基础篇(入门)