M: Mysterious Conch(哈希表)
这里用哈希表简化了对应关系
Problem Description
小明有一个神奇的海螺,你对海螺说一段字符串,海螺就会返回一个单词,有字符串里面的所有字符组成
如告诉海螺
“lloeh”
海螺则会告诉你
“hello”
如果有多个单词对应,海螺则会输出字典序最小的那个,如果没找到输入’nothing to find’(不带引号)
Input
第一行一个m表示m个单词 (1≤m≤105)
接下来m行,每行一个字符串
第m+2行,输入一个k (1≤k≤105)
接来下k行,每行一串字符串
(m+k个字符串长度之和小于107,每一个字符串中的相同字母不会超过5个)
Output
输出k行,如果查到单词输出字典序最小的那个,否则输出’nothing to find’(不带引号)
Sample Input
5
abcd
dbca
hello
lloeh
xyz
3
cdab
holle
yxz
Sample Output
abcd
hello
xyz
代码:
#include <iostream>
#include <cstdio>
#include <map>
#include <cstring>
#include <set>
#include <algorithm>
#include <cmath>using namespace std;
#define ll long long map< ll, set<string> > mp; // 用前一个量对应后面的字符串,set中会自动按字典序排列ll get_hash(string s)
{ll sum =0;int len = s.size();for(int i=0;i<len;i++){sum+=pow(6,s[i]-'a');//由于该题每个字符不超过5个,a对应6^0,b对应6^1,..,可以覆盖所有情况,而且每个字符串对应的数都是唯一的}return sum;
}int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n, t;string s;cin >> n;for(int i=0;i<n;i++){cin>>s;ll tmp = get_hash(s);mp[tmp].insert(s);}cin >> t;//nothing to findfor(int i=0;i<t;i++){cin>>s;ll tmp = get_hash(s);if(mp[tmp].empty()) //nothing to findcout<<"nothing to find"<<endl;elsecout << *mp[tmp].begin()<<endl;}return 0;
}
M: Mysterious Conch(哈希表)相关推荐
- 【C#】集合_哈希表_字典_泛型_文件
数组能做到:存放同种类型数据,且数据个数确定 object类型的数组能满足:放各种类型的数据,确定放多少个,但是随意插入元素,数组做不到 集合能做到:存放各种数据类型,且不确定存放多少个,能做到随意插 ...
- PHP哈希表碰撞攻击原理
哈希表碰撞攻击(Hashtable collisions as DOS attack)的话题不断被提起,各种语言纷纷中招.本文结合PHP内核源码,聊一聊这种攻击的原理及实现. 哈希表碰撞攻击的基本原理 ...
- 在C#中应用哈希表(Hashtable)
一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其 ...
- 自己写的哈希表以及解决哈希冲突
哈希表就是键值key-value对,使用hash函数让key产生哈希值,当不同的key产生相同的哈希值时就是哈希冲突了,产生哈希冲突可以使用拉链法. hash.c #include <stdio ...
- PHP内核中的哈希表结构
https://github.com/HonestQiao/tipi/commit/17ca680289e490763a6a402f79afa2a13802bb36 下载:https://github ...
- 用开放地址法中的线性探查法解决冲突实现哈希表的运算
为了更深的理解哈希算法,自己写了用开放地址法中的线性探查法解决冲突实现哈希表的运算. /*** Created by lirui on 14-8-13.* 用开放地址法中的线性探查法解决冲突实现哈希表 ...
- 散列表查找(哈希表)
散列函数构造经常要考虑: 1.散列表的长度 2.关键字的长度 3.关键字的分布情况 4.计算散列函数所需的时间 5.记录的查找频率 一个"好"的散列函数应遵循一下两条原则 (1)函 ...
- 不同表结构数据迁移_数据结构:哈希 哈希函数 哈希表
写在前面 希望你们看了能够有所收获,同时觉得不错的朋友可以点赞和关注下我,以后还会有更多精选文章分享给大家!大家可以关注一下java提升专栏 java提升zhuanlan.zhihu.com 什么是 ...
- 【数据结构】 哈希表 详解
目录 1. 概念 引入 2. 冲突 2.1 概念 2.2 避免 2.3 冲突-避免-哈希函数设计 2.4 冲突-避免-负载因子调节(重点) 2.5 冲突-解决 2.5.1 闭散列 2.6 冲突-解决- ...
最新文章
- 墙面也能变镜子,只看影子就能还原视频,MIT新算法让摄像头无死角
- 计算机 专业英语 考试,《计算机专业英语》期末考试试卷
- Python3有哪几种数据类型?
- Android之Intent.ACTION_MEDIA_SCANNER_SCAN_FILE:扫描指定文件
- 展望Java的未来:空值类型
- python drop_duplicates_Pandas drop_duplicates方法不起作用
- C++ string s[10] 和 string s(10,‘ ‘)
- Ubuntu Server 18.04 与 MySQL 5.7
- lambda表达式 java 效率_Java8新特性效率之Lambda
- 信号生成及DFT的python实现
- 10-10-010-简介-官网-官网翻译
- Qt中Q_OBJECT与生成的moc文件的作用
- php中fread用法,phpfread函数与fread函数用法_PHP教程
- 什么是单页面应用SPA?和多页面应用的区别?
- Java利用PdfBox实现Pdf转图片
- Android 角标设置
- 何时需要对时间序列进行Log Transformation
- 新房子灶台风水方位设在什么地方比较好?
- MegaCli 安装及使用
- 工控产品之固态硬盘和普通硬盘的区别
热门文章
- Python学习0——基础知识1
- 什么是产品经理,职责是什么?如何入门?
- 树莓派开发笔记(十七):树莓派4B+上Qt多用户连接操作Mysql数据库同步(单条数据悲观锁)
- 【小结】南京大学软件工程专硕2021二战小结
- Android开发快速上手!来看看这份超全面的《Android面试题及解析》,详细的Android学习指南
- 华为服务器做系统蓝屏,服务器安装2008r2后蓝屏
- 安笙机器人_【搬文】《安妻》BY李小雾(安笙 佐安,未来机甲 年下生子,HE)...
- ASCLL字母表顺序
- 怎样使用MindMapper中的聚焦功能
- servu用户信息如何导出_购买1条人脸信息只需5毛钱!人脸识别智能锁如何坚守用户信息安全高地?...