链接:https://ac.nowcoder.com/acm/problem/17889
来源:牛客网

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。
输入描述:

第一行一个正整数n表示操作次数,接下来n行,每行表示一个操作。若该行为"New",则表示新建,为:Delete id"则表示要删除编号为id的文档,其中id为一个正整数。操作按输入顺序依次进行。操作次数不超过100000,删除编号的数值不超过100000。

输出描述:

对于输入的每一个操作,输出其反馈结果。对于新建操作,输出新建的文档的编号;对于删除操作,反馈删除是否成功:如果删除的文件存在,则删除成功,输出"Successful",否则输出"Failed"。

示例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

题意:

要求模拟操作:

  • 选择最小的空位插入一个数字
  • 删除一个位置idxidxidx的数字
    • 删除成功输出成功
    • 删除失败输出失败

思路

  • 用set<int>set<int>set<int>存储所有空位(最多1e51e51e5),
  • 删除kkk时去判断setsetset里是否有空位kkk,有就失败, 反之成功
  • 同理,插入一个数字时,应该删除setsetset里的最小的位置(set.begin())
  • 也可以用堆来维护空位,加个vis[]vis[~]vis[ ]标记即可
#define debug
#ifdef debug
#include <time.h>
#include "/home/majiao/mb.h"
#endif#include <iostream>
#include <algorithm>
#include <vector>
#include <string.h>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <math.h>
#define MAXN ((int)1e5+7)
#define ll long long int
#define INF (0x7f7f7f7f)
#define QAQ (0)using namespace std;#ifdef debug
#define show(x...) \
do { \cout << "\033[31;1m " << #x << " -> "; \err(x); \
} while (0)
void err() { cout << "\033[39;0m" << endl; }
#endiftemplate<typename T, typename... A>
void err(T a, A... x) { cout << a << ' '; err(x...); }int n, m, Q, K, idx;
bool vis[MAXN];int main() {#ifdef debugfreopen("test", "r", stdin);clock_t stime = clock();
#endifscanf("%d ", &Q);n = MAXN;set<int> ety; //存储所有空位//开始时,所有空位都存在for(int i=1; i<=n; i++) ety.insert(i);while(Q--) {char cmd[16];idx = 1;scanf("%s ", cmd);if(cmd[0] == 'D') {scanf("%d ", &idx);if(ety.find(idx) != ety.end()) {printf("Failed\n"); //无法删除,因为ety里有空位idx} else { //可以删除idx//记得把空位idx加入setety.insert(idx);printf("Successful\n");}} else {printf("%d\n", *ety.begin());//插入了最小的空位,所以删除ety.erase(ety.begin());}}#ifdef debugclock_t etime = clock();printf("rum time: %lf 秒\n",(double) (etime-stime)/CLOCKS_PER_SEC);
#endif return 0;
}

NC17889 新建 Microsoft Office Word 文档 set暴力相关推荐

  1. 刷题记录:牛客NC17889新建 Microsoft Office Word 文档

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

  2. NC17889 新建 Microsoft Office Word 文档

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

  3. NC17889 新建 Microsoft Office Word 文档

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

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

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

  5. 新建 Microsoft Office Word 文档

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

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

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

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

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

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

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

  9. 使用ABAP编程实现对微软Office Word文档的操作

    SAP ABAP里提供了一个标准的类CL_DOCX_DOCUMENT,提供了本地以".docx"结尾的微软Office word文档的读和写操作. 本文介绍了ABAP类CL_DOC ...

最新文章

  1. java例程练习(批量修改文件后缀名)
  2. 百度语音识别合成案例
  3. SQL基础【十六、Union】
  4. Python数据分析之全球人口数据
  5. 网络管理员&MCSE2003之2:使用虚拟机Vmware建立多电脑网络环境
  6. jQuery Mobile中对话框dialog的data-*选项
  7. mysql主从表单如何设计_如何快速的10分钟制作一张主从表单及功能
  8. 16.TCP/IP 详解卷1 --- BOOTP:引导程序协议
  9. HTML:在HTML前端界面中直接显示代码
  10. 昆明理工大学计算机面试题,2016年昆明理工大学管理与经济学院F003运筹学复试笔试仿真模拟题...
  11. 统计学笔记——统计推断——参数估计
  12. SessionFactory:使用与配置
  13. 如何在 Ubuntu 中加密硬盘
  14. 计算机网络近年的发展趋势,【网络技术论文】计算机网络技术发展趋势探析(共2622字)...
  15. smba简单设置共享
  16. python申请超大矩阵_在python中处理大型密集矩阵
  17. 阿里云安装nexus详细步骤
  18. anylogic 学习(3)—— 智能体相关操作
  19. C#,格式化json数据的源代码
  20. 【数字逻辑】如何根据真值表的内容写出对应的逻辑关系式?

热门文章

  1. 实际波动率预测:kaggle比赛
  2. 【STM32学习】——USART串口数据包HEX/文本数据包收发流程串口收发HEX/文本数据包实操
  3. pli测试50题题库_PLI认知能力测试,谁懂这个?我面试刚做完,12分钟答了26道题,自我感觉没什么错误,有希望通过吗?...
  4. 分享5款好玩有趣的黑科技APP,个个都很实用
  5. 【资讯】天啦鲁,这十余款创客设计居然由FPGA搞定 [转]
  6. 学习笔记:Qt与Matlab混合编程及遇到的诸多问题(附DEMO)
  7. AEJoy —— AE 表达式入门基础
  8. 《商用密码应用与安全性评估》第一章密码基础知识1.6密钥交换协议
  9. 几组数据的相关性python_数据分析---用Python进行相关性分析(兼谈假设检验)
  10. origin做相关性分析图_如何用Origin绘制热图?