HDU1880 魔咒词典
题目大意:对应的输入多行,每行两个字符串,两个字符串互相映射。接下来询问的时候,如果这个字符串出现过,输出其对应的字符串。
分析:二重哈希来判断字符串是否存在,输出其对应的字符串就行。二重哈希的入门题,字符串还挺有意思的。
代码:
#include<iostream>
#include<string>
#include<map>
#include<string>
using namespace std;
typedef unsigned long long ull;
map<pair<int,int>,string> dict;
const int s1=,s2=;
const int maxn=1e5+;
char s[],t[];
int hash1(char* s){
int ans=;
for(int i=;s[i];i++)
ans=(ans*s1+s[i])%maxn;
return ans;
}
int hash2(char* s){
int ans=;
for(int i=;s[i];i++)
ans=(ans*s2+s[i])%maxn;
return ans;
}
void read(){
int cnt=;
while(scanf("%s",s)&&s[]!='@'){
getchar();
cnt=;
while((t[cnt]=getchar())!='\n')
cnt++;
t[cnt]='\0';
dict[make_pair(hash1(s),hash2(s))]=t;
dict[make_pair(hash1(t),hash2(t))]=s;
}
}
void solve(){
int m,x,y,cnt=;
scanf("%d",&m);
getchar();
while(m--){
cnt=;
while((s[cnt]=getchar())!='\n')
cnt++;
s[cnt]='\0';
x=hash1(s);
y=hash2(s);
if(s[]=='['){
if(dict.find(make_pair(x,y))==dict.end()) printf("what?\n");
else cout<<dict[make_pair(x,y)]<<endl;
}
else{
if(dict.find(make_pair(x,y))==dict.end()) printf("what?\n");
else cout<<dict[make_pair(x,y)].substr(,dict[make_pair(x,y)].length()-)<<endl;
}
}
}
int main(){
read(); solve(); return ;
}
HDU1880 魔咒词典的更多相关文章
- C++之路进阶——HDU1880(魔咒词典)
---恢复内容开始--- New~ 欢迎参加2016多校联合训练的同学们~ 魔咒词典 Time Limit: 8000/5000 MS (Java/Others) Memory Limit: 3 ...
- HDU 1880 魔咒词典(字符串哈希)
题目链接 Problem Description 哈利波特在魔法学校的必修课之一就是学习魔咒.据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一 ...
- hdu 1880 魔咒词典
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1880 魔咒词典 Description 哈利波特在魔法学校的必修课之一就是学习魔咒.据说魔法世界有10 ...
- HDU 1880 魔咒词典 (Hash)
魔咒词典 Time Limit: 8000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- 题目1029:魔咒词典(map使用以及字符串读取函数总结)
题目链接:http://ac.jobdu.com/problem.php?pid=1029 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus // // ...
- hdu 1880 魔咒词典 (字符串哈希)
魔咒词典 Time Limit: 8000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- ACM1880魔咒词典
魔咒词典 Problem Description 哈利波特在魔法学校的必修课之一就是学习魔咒.据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一 ...
- HDU - 1880 魔咒词典~哈希入门
哈利波特在魔法学校的必修课之一就是学习魔咒.据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一个需要的魔咒,所以他需要你的帮助. 给你一部魔咒词 ...
- 九度OJ 1029:魔咒词典 (排序)
时间限制:5 秒 内存限制:32 兆 特殊判题:否 提交:4574 解决:1318 题目描述: 哈利波特在魔法学校的必修课之一就是学习魔咒.据说魔法世界有100000种不同的魔咒,哈利很难全部 ...
随机推荐
- Educational Codeforces Round 73 (Rated for Div. 2)F(线段树,扫描线)
这道题里线段树用来区间更新(每次给更大的区间加上当前区间的权重),用log的复杂度加快了更新速度,也用了区间查询(查询当前区间向右直至最右中以当前区间端点向右一段区间的和中最大的那一段的和),也用lo ...
- ajax相同url和参数,将不会重复发起请求
IE浏览器下使用GET发送请求时,如果两次请求的地址和参数相同,在不刷新页面的情况下,浏览器会缓存第一次请求的内容,服务端更新后浏览器仍然显示第一次的内容. 解决办法: 一. GET请求URL后加随机 ...
- springMVC读取本地图片显示到前端页面
@RequestMapping("/getImage") @ResponseBody public void getImagesId(HttpServletResponse rp) ...
- springBoot+MybatisPlus数据库字段使用驼峰命名法时报错
假如有个实体类: package com.jeff.entity; public class User { /** * 主键id */ private Integer id; /** * 登陆名 */ ...
- Python 基础之面向对象之异常处理
一.认识异常 1.常用异常报错的错误类型 IndexError 索引超出序列的范围 KeyError 字典中查找一个不存在的关键字 Na ...
- Lesson 14 The Butterfly Effect
Why do small errors make it impossible to predict the weather system with a high degree of accuracy? ...
- nginx的preaccess 阶段的limit_req模块与limit_conn模块
limit_conn 模块限制并发连接数 [root@python vhast]# vim limit_conn.conf limit_conn_zone $binary_remote_addr zo ...
- 02-08Android学习进度报告八
今天主要学习了昨天还没有学习完的Date & Time组件的知识. 首先是DatePicker(日期选择器) android:calendarTextColor : 日历列表的文本的颜色 an ...
- InnoDB中一棵B+树能存多少行数据
https://www.jianshu.com/p/3578beed5a68 https://www.cnblogs.com/tongongV/p/10952102.html InnoDB 存储引擎最 ...
- 搭建python虚拟环境virtualenv
virtualenv 是一个创建隔离Python环境的工具,创建虚拟环境运行,达到节省本地运行空间的目的. 安装vitualenv # pip install virtualenv 创建一个虚拟环境( ...