STL Queue(队列)学习笔记 + 洛谷 P1540 机器翻译
队(Queue)
队简单来说就是一个先进先出的“栈”,但是不同于标准“栈”的先进后出。
- 基本操作:
- push(x) 将x压入队列的末端
- pop() 弹出队列的第一个元素(队顶元素),注意此函数并不返回任何值
- front() 返回第一个元素(队顶元素)
- back() 返回最后被压入的元素(队尾元素)
- empty() 当队列为空时,返回true
- size() 返回队列的长度
来一张图值观理解

接下来就按照题目中的案例来理解
P1540 机器翻译
题目背景
题目描述
输入格式
输出格式
输入输出样例
3 7
1 2 1 5 4 4 1
5
说明/提示
样例解释
整个查字典过程如下:每行表示一个单词的翻译,冒号前为本次翻译后的内存状况: 1:查找单词 1 并调入内存。 1 2:查找单词 2 并调入内存。 1 2:在内存中找到单词 1。 1 2 5:查找单词 5 并调入内存。 2 5 4:查找单词 4 并调入内存替代单词 1。 2 5 4:在内存中找到单词 4。 5 4 1:查找单词 1 并调入内存替代单词 2。 共计查了 5 次词典。
数据范围
- 对于10% 的数据有 M=1,N <=5;
- 对于100% 的数据有 M <= 100,1≤N≤1000。
翻译软件的内存区是一个很明显的队,理解了以后就很容易写出代码了
#include <iostream>
#include <queue>
using namespace std;
int dic, words, res = 0, temp;
queue ram;
int Ram_Inform[1000000] = { 0 };//内存里储存的字典信息
int main()
{
cin >> dic >> words;
while (words--) {
cin >> temp;
if (Ram_Inform[temp]);//字典里有,啥都不用做
else if (ram.size() < dic) {//字典里没有且内存未用完
ram.push(temp);
Ram_Inform[temp]++;//表示内存里现在储存了temp
res++;//查询了字典
}
else {//字典里没有且内存已用完
Ram_Inform[ram.front()]--;//消除字典中的信息
ram.pop();//弹出队首元素
ram.push(temp);
Ram_Inform[temp]++;//表示内存里现在储存了temp
res++;//查询了字典
}
}
cout << res;
}
STL Queue(队列)学习笔记 + 洛谷 P1540 机器翻译的更多相关文章
- 斜率优化dp学习笔记 洛谷P3915[HNOI2008]玩具装箱toy
本文为原创??? 作者写这篇文章的时候刚刚初一毕业…… 如有错误请各位大佬指正 从例题入手 洛谷P3915[HNOI2008]玩具装箱toy Step0:读题 Q:暴力? 如果您学习过dp 不难推出d ...
- 边带权并查集 学习笔记 & 洛谷P1196 [NOI2002] 银河英雄传说 题解
花了2h总算把边带权并查集整明白了qaq 1.边带权并查集的用途 众所周知,并查集擅长维护与可传递关系有关的信息.然而我们有时会发现并查集所维护的信息不够用,这时"边带权并查集"就 ...
- 洛谷 P1540 机器翻译
链接:https://www.luogu.org/problemnew/show/p1540 题目: 题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 题目描述 这个翻译 ...
- STL Stack(栈)学习笔记 + 洛谷 P1449 后缀表达式
稍微看了看刘汝佳的白皮书,“实用主义”的STL实在是香到我了,而且在实验室大佬的推荐下我开始了stl的学习. 每篇附带一个题目方便理解,那行,直接开始. 毕竟是实用主义,所以就按照给的题目的例子来理解 ...
- 洛谷 P1540 机器翻译(队列)
题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单词,软件会先 ...
- 洛谷——P1540机器翻译(队列操作)
#include<bits/stdc++.h> using namespace std; int main(){ queue<int> num;//存放的内存 ]; int m ...
- 快速沃尔什变换(FWT)学习笔记 + 洛谷P4717 [模板]
FWT求解的是一类问题:\( a[i] = \sum\limits_{j\bigoplus k=i}^{} b[j]*c[k] \) 其中,\( \bigoplus \) 可以是 or,and,xor ...
- [NOIP2010] 提高组 洛谷P1540 机器翻译
题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单词,软件会先 ...
- 洛谷P1540 机器翻译
题目链接:https://www.luogu.org/problemnew/show/P1540
随机推荐
- lw_oopc(c语言实现面向过程宏文件)解析
一:计算结构体成员变量偏移量宏 #ifdef LW_OOPC_USE_USER_DEFINED_OFFSETOF // 有些环境可能不支持,不过,这种情形极少出现 #define LW_OOPC_OF ...
- Consul入门初识
Consul Consul是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,由HashiCrop公司用Go语言开发,基于Mozilla Public License 2.0的协议进行开源 ...
- spring boot admin项目的集成和开发
Spring Boot Admin是一个Github上的一个开源项目,它在Spring Boot Actuator的基础上提供简洁的可视化WEB UI,是用来管理 Spring Boot 应用程序的一 ...
- python3大特征之多态
1.什么是多态 多态指的是一类事物有多种形态 例如: 动物有多种形态: 人,狗,猪 在程序中多态指的是,不同对象可以响应相同方法,并可以有自己不同的实现方式 2.为什么需要多态 案例分析: impor ...
- 搜索引擎-SHODAN
shodan这个搜索引擎不会爬取网页内容,而是爬取所有的联网设备. 这个搜索引擎还是很强大的,下图就是我用shodan查自己的案例服务器的结果: 如图,可以查到这台服务器安装了wdcp管理面板,黑客完 ...
- MongoDB入门二
MongoDB配置 本地启动 c:\MongoDB\bin>mongod.exe --dbpath "C:\\MongoDB\data\db" --logpath " ...
- CSS选择器使用
今天要对CSS选择器的使用方法做一个全面的总结(几乎全部是从这篇文章摘抄的 https://blog.csdn.net/qq_39241986/article/details/82185697) CS ...
- Idea+springboot入坑之路
环境准备 IDEA 社区版: 2019.3 jdk: 1.8.0_241 tomcat: 7.0.99 maven: 3.6.3 spring-boot:2.2.5.RELEASE 插件 spring ...
- .NET Core下开源任务调度框架Hangfire
今天无意中发现了一个很好用的任务调度框架.Hangfire作为一款高人气且容易上手的分布式后台执行服务,支持多种数据库.在 .net core的环境中,由Core自带的DI管理着生命周期. 相较于qu ...
- 标记下 'net 查壳/脱壳/加壳' 工具
net查壳工具 DotNet Id v1.0.0.3 该net程序集被“MaxToCode”加壳了(也不能完全相信). 加壳工具就是列表中列出的了. de4Net.exe脱壳工具版本de4dot-v3 ...