NC17889 新建 Microsoft Office Word 文档 set暴力

链接: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

题意:

要求模拟操作:

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



思路

  • s e t < i n t > set<int> set<int>存储所有空位(最多 1 e 5 1e5 1e5),
  • 删除 k k k时去判断 s e t set set里是否有空位 k k k,有就失败, 反之成功
  • 同理,插入一个数字时,应该删除 s e t set set里的最小的位置(set.begin())
  • 也可以用堆来维护空位,加个 v i s [ <mtext>   </mtext> ] 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; }
#endif

template<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 debug
	freopen("test", "r", stdin);
	clock_t stime = clock();
#endif
	scanf("%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加入set
				ety.insert(idx);
				printf("Successful\n");
			}
		} else {
			printf("%d\n", *ety.begin());
			//插入了最小的空位,所以删除
			ety.erase(ety.begin());
		}
	}

#ifdef debug
	clock_t etime = clock();
	printf("rum time: %lf 秒\n",(double) (etime-stime)/CLOCKS_PER_SEC);
#endif 
	return 0;
}


全部评论

相关推荐

点赞 评论 收藏
分享
今天周一休息,突发奇想写一篇阶段总结。如题,我已经去了一个和Java彻底毫无关联的行业。曾经我以为自己能在计算机行业发光发热,没想到刚入行一年多就当了逃兵。从最开始的热爱到现在一看到代码就厌恶,不知道自己经历了什么。所以我去干什么了?答案是:在成都当了租房销售。上班那会压力大了就念叨着去干租房中介,但是一直下不去这个决心,想着自己学了四年多的计算机知识,终究还是不甘心。终于在某一天准备八股文的时候,看着无数篇和工作内容关系不大的理论知识,那一刻下定决心,决定尝试一下销售行业,也算是给自己一个交代。后面阴差阳错的投了成都自如去当租房管家,没想到面试很顺利,在当天一百多个面试的人里面,我成为了为数不多通过的几个幸运儿之一。目前已经培训通过,正式入职,也开了单,也有压力但是每天过得很开心,真心喜欢那种和人交流的感觉,哪怕是最后没有选择找我租房。说这些也是想告诉那些大三,大四正在找Java实习而焦虑的同学:你们现在还年轻,选择很多,容错率也很高,可以尽情去尝试自己喜欢的行业和工作。不用因为某一次的面试没通过或者简历石沉大海而焦虑,更不用因为身边人都在挤编程的独木桥就强迫自己跟风。也算是自己的碎碎念吧,也希望自己能在新的领域取得一点小成就。也祝牛油工作顺利!
许愿面试顺利的小白很...:ai来了,如果有天赋的话,销售真的是个很好的工作
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 长得好看会提高面试通过率吗? #
5376次浏览 53人参与
# 百度工作体验 #
316382次浏览 2233人参与
# 米连集团26产品管培生项目 #
7741次浏览 235人参与
# 沪漂/北漂你觉得哪个更苦? #
1908次浏览 46人参与
# 离家近房租贵VS离家远但房租低,怎么选 #
16954次浏览 137人参与
# 春招至今,你的战绩如何? #
16914次浏览 153人参与
# MiniMax求职进展汇总 #
25514次浏览 323人参与
# 你的实习产出是真实的还是包装的? #
3588次浏览 59人参与
# HR最不可信的一句话是__ #
1223次浏览 34人参与
# AI面会问哪些问题? #
1120次浏览 30人参与
# 你做过最难的笔试是哪家公司 #
1459次浏览 24人参与
# AI时代,哪个岗位还有“活路” #
3186次浏览 56人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
153005次浏览 889人参与
# 简历第一个项目做什么 #
32276次浏览 371人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
8080次浏览 44人参与
# 简历中的项目经历要怎么写? #
311392次浏览 4289人参与
# XX请雇我工作 #
51168次浏览 171人参与
# 投格力的你,拿到offer了吗? #
178458次浏览 891人参与
# 你最满意的offer薪资是哪家公司? #
77047次浏览 375人参与
# AI时代,哪些岗位最容易被淘汰 #
65091次浏览 921人参与
# 秋招白月光 #
731753次浏览 5441人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187722次浏览 1123人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务