首页 > 试题广场 >

指纹锁

[编程题]指纹锁
  • 热度指数:22 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
    HA实验有一套非常严密的安全保障体系,在HA实验基地的大门,有一个指纹锁。
    该指纹锁的加密算法会把一个指纹转化为一个不超过1e7的数字,两个指纹数值之差越小,就说明两个指纹越相似,当两个指纹的数值差≤k时,这两个指纹的持有者会被系统判定为同一个人。
    现在有3种操作,共m个,
操作1:add x,表示为指纹锁录入一个指纹,该指纹对应的数字为x,如果系统内有一个与x相差≤k的指纹,则系统会忽略这次添加操作
操作2:del x,表示删除指纹锁中的指纹x,若指纹锁中多个与x相差≤k的指纹,则全部删除,若指纹锁中没有指纹x,则可以忽略该操作,
操作3:query x,表示有一个持有指纹x的人试图打开指纹锁,你需要设计一个判断程序,返回该人是否可以打开指纹锁(只要x与存入的任何一个指纹相差≤k即可打开锁)。
    初始状态,指纹锁中没有任何指纹。


输入描述:
第一行有2个正整数m,k。
接下来m行,每行描述一种操作:add x,del x或query x。


输出描述:
对于每个query操作,输出一行,包含一个单词“Yes”或“No”,表示该人是否可以打开指纹锁。
示例1

输入

4 3
add 1
add 10
query 5
query 4

输出

No
Yes
示例2

输入

4 3
add 1
query 4
del 1
query 4

输出

Yes
No
示例3

输入

6 3
add 10
query 10
add 5 
query 5
del 7		//系统将指纹10和指纹5全部删除
query 8

输出

Yes
Yes
No

备注:
对于100%的测试数据:
1 ≤ k,m ≤ 1000000
数据量较大,注意使用更快的输入输出方式。
头像 19_hanhan
发表于 2020-05-30 13:34:45
题目 题目描述:     HA实验有一套非常严密的安全保障体系,在HA实验基地的大门,有一个指纹锁。     该指纹锁的加密算***把一个指纹转化为一个不超过1e7的数字,两个指纹数值之差越小,就说明两个指纹越相似,当两个指纹的数值差≤k时,这两个指纹的 展开全文
头像 sunrise__sunrise
发表于 2020-05-28 23:37:42
自定义比较set 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 HA实验有一套非常严密的安全保障体系,在HA实验基地的大门,有一个指纹锁。 展开全文
头像 在刷题的单身狗很开心
发表于 2023-09-24 16:34:52
用set保存,set有内部默认从小到大排序的特性还有自动去重的特性。 在进行检测的时候使用set的lower_bound函数,这个函数对找到最近的插入位置,如果存在该数就返回第一个数的下标。如果不存在就返回第一个大于该数的下标,所以是否有符合要求的数只需要看返回的迭代器对应的数以及前一个数是否 展开全文
头像 sunny_forever
发表于 2021-08-04 21:50:43
看了大佬题解,学到了 Code #include <bits/stdc++.h> using namespace std; int m,k,x; char s[10]; struct cmp{ bool operator () (const int & x,con 展开全文
头像 ziuch
发表于 2020-08-23 15:13:16
题目描述     HA实验有一套非常严密的安全保障体系,在HA实验基地的大门,有一个指纹锁。     该指纹锁的加密算***把一个指纹转化为一个不超过1e7的数 展开全文
头像 m0moo
发表于 2020-07-09 21:04:35
题目描述 HA实验有一套非常严密的安全保障体系,在HA实验基地的大门,有一个指纹锁。 该指纹锁的加密算***把一个指纹转化为一个不超过1e7的数字,两个指纹数值之差越小,就说明两个指纹越相似,当两个指纹的数值差≤k时,这两个指纹的持有者会被系统判定为同一个人。 现在有3种操作,共m个,操作 展开全文
头像 Infinite_Light
发表于 2025-01-10 13:56:44
链接:https://ac.nowcoder.com/acm/problem/17508 来源:牛客网 题目描述     HA实验有一套非常严密的安全保障体系,在HA实验基地的大门,有一个指纹锁。 展开全文
头像 Camouflagetch
发表于 2022-04-16 13:17:39
set中重载运算符()进行自定义排序 ">using namespace std; int m, k, x; struct cmp{ bool operator()(const int &a, const int &b) const{ if(abs(a - b 展开全文

问题信息

STL
难度:
0条回答 40浏览

热门推荐

通过挑战的用户

查看代码
指纹锁