传送门:牛客

题目描述:

CSL正在学习《计算机办公自动化》文件的建立与删除。
CSL发现,当他新建一个word文档时,会得到一个名为"新建 Microsoft Office Word 文档.doc"的文件,再新建一个,
则名为"新建 Microsoft Office Word 文档(2).doc",再新建,便是"新建 Microsoft Office Word 文档(3).doc"。不断新
建,编号不断递增。倘若他已经新建了三个文档,然后删除了"新建 Microsoft Office Word 文档(2).doc",再新建一个
就又会得到一个"新建 Microsoft Office Word 文档(2).doc"。
严格来说,Windows在每次新建文档时,都会选取一个与已有文件编号不重复的最小正整数作为新文档的编号。
现在,请你编程模拟以上过程,支持以下两种操作:
New:新建一个word文档,反馈新建的文档的编号;
Delete id:删除一个编号为id的word文档,反馈删除是否成功。
初始时一个文件都没有,"新建 Microsoft Office Word 文档.doc"的编号算作1。
输入:
12
New
New
New
Delete 2
New
Delete 4
Delete 3
Delete 1
New
New
New
Delete 4
输出:
1
2
3
Successful
2
Failed
Successful
Successful
1
3
4
Successful

一道一星的简单题,可以算优先队列的一道入手题吧

主要思路:

  1. 我们先使用一个桶来记录每一个id是否已被创建且桶的最大的大小,以及使用一个优先队列来记录每一个被删除的数,为什么我们需要这么干呢,我们发现我们删除了很多个数字,在之后我们的New操作是我们是需要将删除的数字中的最小值进行入桶的,那么用什么能快速的得出目前序列中的最小数字呢,优先队列就不失为一种好方法
  2. 那么既然我们已经决定使用优先队列来存储我们的数据,我们每次进行New的时候就判断一下我们的优先队列中是否有数据,如果是有数据的那这就意味着我们之前有进行过删除操作.那么此时我们应该将删除的数字中的最小值进行入桶即可(也就是我们优先队列中的队顶);进行Delete操作时,我们只需要判断一下我们的桶中是否有我们的这个数字,假设没有的话就是"failed"操作,如果有的话,我们将其删除并将这个数字进队即可

注意:c++的STL中为我们提供了快速创建从小到大排序的优先队列的方法,十分简单

priority_queue<int,vector<int>,greater<int> >q;
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <string.h>
#include <stack>
#include <deque>
using namespace std;
typedef long long ll;
#define inf 0x3f3f3f3f
#define root 1,n,1
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {ll x=0,w=1;char ch=getchar();for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';return x*w;
}
#define maxn 1000000
#define ll_maxn 0x3f3f3f3f3f3f3f3f
const double eps=1e-8;
int a[maxn];int num=0;
priority_queue<int,vector<int>,greater<int> >q;
int main() {int n;n=read();string opt;while(n--) {cin>>opt;if(opt[0]=='N') {if(!q.empty()) {printf("%d\n",q.top());a[q.top()]=1;q.pop();}else {printf("%d\n",++num);a[num]=1;}}else if(opt[0]=='D') {int id;id=read();if(a[id]==1) {a[id]=0;q.push(id);printf("Successful\n");}else {printf("Failed\n");}}}return 0;
}

刷题记录:牛客NC17889新建 Microsoft Office Word 文档相关推荐

  1. 【牛客】新建 Microsoft Office Word 文档题解

    原题链接 题目描述 CSL正在学习<计算机办公自动化>文件的建立与删除. CSL发现,当他新建一个word文档时,会得到一个名为"新建 Microsoft Office Word ...

  2. NC17889 新建 Microsoft Office Word 文档 set暴力

    链接:https://ac.nowcoder.com/acm/problem/17889 来源:牛客网 CSL正在学习<计算机办公自动化>文件的建立与删除. CSL发现,当他新建一个wor ...

  3. NC17889 新建 Microsoft Office Word 文档

    题目链接 题目链接 题意 Windows在每次新建文档时,都会选取一个与已有文件编号不重复的最小正整数作为新文档的编号. 现在,模拟以上过程,支持以下两种操作: New:新建一个word文档,反馈新建 ...

  4. NC17889 新建 Microsoft Office Word 文档

    STL+模拟. 1.开一个bool vis[i]表示第i个文档是否存在,然后建一个set存放没有建立的文件. 2.建立文档:直接取set的首元素,vis[i] = true. 3.删除文档:查询vis ...

  5. 牛客小白月赛7 I.新建 Microsoft Office Word 文档

    牛客小白月赛7 I.新建 Microsoft Office Word 文档 题目链接 题目描述 CSL正在学习<计算机办公自动化>文件的建立与删除. CSL发现,当他新建一个word文档时 ...

  6. 新建 Microsoft Office Word 文档(C语言)

    链接:https://www.nowcoder.com/acm/contest/190/I 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6553 ...

  7. 新建 Microsoft Office Word 文档

    CSL正在学习<计算机办公自动化>文件的建立与删除. CSL发现,当他新建一个word文档时,会得到一个名为"新建 Microsoft Office Word 文档.doc&qu ...

  8. 解决 Mac 下编辑 Microsoft Office Word 文档与 Windows 排版不一致的问题

    使用Microsoft Office for Mac编辑文档,在Windows下打开有时排版会发生改变,这个问题是由两款操作系统的字体库不一致导致的.解决方法: 1.在macOS上安装Windows的 ...

  9. 刷题记录:牛客NC24608[USACO 2011 Ope S]Learning Languages

    传送门:牛客 题目描述: [USACO11OPEN]Learning Languages S 农夫约翰的 N ( 2 < = N < = 10 , 000 ) N(2<=N<= ...

最新文章

  1. 手把手教你在Python中实现文本分类(附代码、数据集)
  2. python怎么安装requests库-小白安装python的第三方库:requests库
  3. WIFI搜索的到别人,却找不到自己家的wifi
  4. Vue官网todoMVC示例
  5. 图像处理理论(二)——形态学、边缘检测、图像金字塔
  6. python统计英文句子每个单词字数_Python小书3-文本英文单词统计
  7. Nginx 快速安装手册及如何修改端口号
  8. eclipse 配置Maven问题解决办法:新建maven工程时报错:Could not resolve archetype org.apache.maven.archetypes ....
  9. python爬小说目录_【python入门爬虫】爬取笔趣阁小说
  10. MyEclipse搭建SSH(Struts2+Spring2+Hibernate3)框架项目教程
  11. 新东方php面试题,新东方学校各教师面试题和笔试题及答案(9套)
  12. Oracle Primavera P6EPPM Mobile/App 安卓移动端分享(长期更新)
  13. 在jQuery中提交表单的方式有哪些
  14. 暴雪战网国际版[国区登录战网国际版方法]
  15. 2020icpc沈阳打铁记
  16. android stdio findViewById(R.id.报错
  17. 关于网站域名备案流程
  18. 锂电池 使用 充放电过程
  19. 使用Fiddler软件抓取手机某个App的API接口
  20. qspi(spi四线模式)

热门文章

  1. 直播源码:云豹腾讯直播系统可以分为以下几个类型
  2. ESP8266 网页调控RGB灯
  3. nginx +unicorn + gollum 搭建 wiki
  4. 5大JavaScript前端框架简介
  5. 设计模式总结干货(很好链接站点,见解深刻,易理解入门)
  6. 2021年T电梯修理报名考试及T电梯修理最新解析
  7. highcharts实现立体3D饼状图
  8. 信创办公–基于WPS的PPT最佳实践系列 (自定义版式)
  9. python编程超市购物系统_python 自动购物系统 超简单源码(入门级)
  10. 你发现了没?Github在七夕搞事情:remote: Support for password authentication was removed on August 13, 2021.