
数据结构_Hash
just_sort
Acdream.
展开
-
初识Hash
哈希表提供这么一种其它数据结构并不擅长的操作:“在理想情况下,能用常量时间查找到指定值的数据”。普通数据结构如线性表、树、图等,其结点内的数据与数据所存储的位置之间的关系是随机的,所以要想提供“查找某已知值的数据的位置”只能通过“比较”方式进行,如:对于未排序的线性表,要从头至尾逐一比较是否“==”;对于二分查找,则要比较“>”“<”还是“==”。这样,时间复杂度是n或者logn。而哈原创 2016-03-05 18:15:40 · 368 阅读 · 0 评论 -
BZOJ 2462 BeiJing 2011 矩阵模板 二维hash
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2462 题意: [Submit][Status][Discuss] Description给定一个M行N列的01矩阵,以及Q个A行B列的01矩阵,你需要求出这Q个矩阵哪些在 原矩阵中出现过。 所谓01矩阵,就是矩阵中所有元素不是0就是1。 Input输入文件的第一行为M、N、A原创 2017-04-07 15:18:31 · 831 阅读 · 0 评论 -
BZOJ 3483 SGU505 Prefixes and suffixes(询问在线版) Hash,预处理,神做法
DescriptionGAL发现了N个特殊的字母序列,由小写字母组成。小L认为,对于两个字符串s1,s2,若s1是某个特殊序列的前缀,s2是该特殊序列的后缀,则称s1,s2被这个序列拥有。现在小L给出M对s1,s2,对于每对字符串,问它们被几个特殊序列拥有。Input第1行一个整数N。接下来N行,每行一个字符串,代表N个特殊序列。第N+2行一个整数M。接下来M行每行一对s1,s2用空格隔开。S1,s原创 2017-04-07 19:31:21 · 1038 阅读 · 0 评论 -
BZOJ 1567: [JSOI2008]Blue Mary的战役地图 Hash+set
[Submit][Status][Discuss] Description Blue Mary最近迷上了玩Starcraft(星际争霸) 的RPG游戏。她正在设法寻找更多的战役地图以进一步提高自己的水平。 由于Blue Mary的技术已经达到了一定的高度,因此,对于用同一种打法能够通过的战役地图,她只需要玩一张,她就能了解这一类战役的打法,然后她就没有兴趣再玩儿这一类地图了。而网上流传的地图有很原创 2017-04-07 20:05:55 · 556 阅读 · 0 评论 -
BZOJ 3207: 花神的嘲讽计划Ⅰ Hash,预处理或者在线主席树
Description 背景 花神是神,一大癖好就是嘲讽大J,举例如下: “哎你傻不傻的!【hqz:大笨J】” “这道题又被J屎过了!!” “J这程序怎么跑这么快!J要逆袭了!” …… 描述 这一天DJ在给吾等众蒟蒻讲题,花神在一边做题无聊,就跑到了一边跟吾等众蒟蒻一起听。以下是部分摘录: 1. “J你在讲什么!” “我在讲XXX!” “哎你傻不傻的!这么麻烦,直接XXX再X原创 2017-04-08 21:16:05 · 467 阅读 · 0 评论 -
1414: [ZJOI2009]对称的正方形 Hash+二分
Description Orez很喜欢搜集一些神秘的数据,并经常把它们排成一个矩阵进行研究。最近,Orez又得到了一些数据,并已经把它们排成了一个n行m列的矩阵。通过观察,Orez发现这些数据蕴涵了一个奇特的数,就是矩阵中上下对称且左右对称的正方形子矩阵的个数。 Orez自然很想知道这个数是多少,可是矩阵太大,无法去数。只能请你编个程序来计算出这个数。 Input 文件的第一行为两个整数n和m原创 2017-04-29 11:49:42 · 601 阅读 · 0 评论 -
Codeforces Beta Round #4 (Div. 2 Only) C. Registration system hash
题目链接:http://codeforces.com/problemset/problem/4/C题意:如果这个词第一次出现,输出ok否则输出这个词,并且输出在此之前这个词出现了多少次解法:直接双Hash//UVALive 6959#include <bits/stdc++.h>using namespace std;typedef long long LL;int gethash1(char原创 2017-04-06 13:16:19 · 504 阅读 · 0 评论 -
HDU 4287 Intelligent IME hash
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4287题意:用9宫格敲了N次,给m个字符串,问你每次敲击,能够敲出多少个单词解法:Hash或者map模拟一下,水题//HDU 4287#include <bits/stdc++.h>using namespace std;map <int, int> mp1;string s[5010];map原创 2017-04-06 14:28:01 · 463 阅读 · 0 评论 -
HDU 4821 String hash
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4821题意:给你一个字符串,让你找到有多少个长度为m*l的子串,由m个长度为l的不同的串构成的解法:hash一下之后,就直接暴力找就好了但是暴力不是直接枚举串的起点,这样是要T的。其实对于已经找到的一个子串,我们只需要除去他的最开头的那个小子串,加上它末尾后一个小子串,不断循环下去,就可以得到一系列的子串原创 2017-04-06 21:16:00 · 661 阅读 · 0 评论 -
BZOJ 3555: [Ctsc2014]企鹅QQ Hash乱搞
DescriptionPenguinQQ是中国最大、最具影响力的SNS(Social Networking Services)网站,以实名制为基础,为用户提供日志、群、即时通讯、相册、集市等丰富强大的互联网功能体验,满足用户对社交、资讯、娱乐、交易等多方面的需求。 小Q是PenguinQQ网站的管理员,他最近在进行一项有趣的研究——哪些账户是同一个人注册的。经过长时间的分析,小Q发现同一个人注册的原创 2017-04-07 14:20:21 · 444 阅读 · 0 评论 -
单词替换 KMP 简单应用
【题意】给出一个仅包含小写字母的字符串s,和单词A,B。把s中所有的出现过的A替换为B。【解题思路】简单KMP算法的应用,每一个匹配的地方注意输出替换后的字符串就可以了。【补充】Sample Input3aaaabaaaaabababaabacdSample Outputbbbbacdba【AC代码】#include #incl原创 2016-05-24 10:34:55 · 610 阅读 · 0 评论 -
POJ 1840 Eqs
题目门【题意】题意非常简单,问你能找到多少个x,满足a1x13+ a2x23+ a3x33+ a4x43+ a5x53=0 。【解题思路】如果是暴力枚举的话,复杂度高达100^5,明显不符合时限要求,故而考虑先枚举两项的和,然后枚举3项的和,然后统计在这些项中存在多少种相等的情况。说白了,就是简单hash,或者枚举+二分。【AC代码】我这里写了个hash版本的,原创 2016-03-05 18:36:29 · 364 阅读 · 0 评论 -
POJ 3349 Snowflake Snow Snowflakes
题目门【题意】给了n片雪花,判断其中是否有两个或则以上相同,有的话就输出Twin snowflakes found. 否则输出没找到的信息。【解题思路】一个非常简单的问题,用map映射一下就好了,然后关键是顺时针过河逆时针的去判断两片雪花是否完全相同。网上的题解都把这道题贴到hash里了,我也暂且把它放在hash里了。【AC代码】#include #include #inclu原创 2016-03-05 18:47:49 · 793 阅读 · 0 评论 -
POJ 1200 Crazy Search
题目传送门【题意】给了一个字符串,和n,m,这字符串里最多有m个不同的字符,现在要求有多少个长度为n且不同的字串。【坑点】一直在看数据范围,题上 怎么没给呀,只给了字符串长度的数据范围,最后看Disscuss里面的人说,input里解释了一切,果然input里的不超过16M说明了一切,解决了这个问题就很好解决了,把每一个长度为n的字符串hash成一个m进制的整数,然后判重并记录次数。【原创 2016-03-06 15:12:37 · 406 阅读 · 0 评论 -
POJ 2785 4 Values whose Sum is 0
题目传送门【题意】题意很简单,给了n*4的矩阵,问有多少种情况满足每一列取一个某个数字,加起来为0.【解题思路】 Hash.【AC代码】#include #include #include #include using namespace std;#define CLE(a,b) memset(a,b,sizeof(a))#define MEC(a,b) memcpy(a,原创 2016-03-06 17:28:33 · 350 阅读 · 0 评论 -
POJ 3640 Conformity(Hash)
DescriptionFrosh commencing their studies at Waterloo have diverse interests, as evidenced by their desire to take various combinations of courses from among those available.University administr原创 2016-03-08 11:24:14 · 1035 阅读 · 0 评论 -
POJ 2002 Squares
题目传送门【题意】给出n个二维平面上的坐标,求出这n个坐标最多能够构成多少个正方形。【解题思路】自己完全不会做,只好看网上题解了,现在把Hash和二分的解法展示如下,首先说一说解题的思路,通过n最大为1000可以推测,应该是n^2左右的效率,所以我们先枚举两个点,然后通过这两个点再求出另外两个点的坐标,在输入的集合中查找是否存在这两个点,如果存在的话就可以构成一个正方形。但原创 2016-03-08 14:58:42 · 498 阅读 · 0 评论 -
字符串散列常用板子
【转载来源】http://bbs.byr.cn/#!article/ACM_ICPC/21959【模板】#define M 249997#define M1 1000001#define M2 0xF0000000// RS Hash Function unsigned int RSHash(char*str){ unsigned int b=378551 ;转载 2016-03-08 15:24:57 · 477 阅读 · 0 评论 -
POJ 2503 Babelfish(Hash)
【题目来源】题目传送门【题意】上篇文章已经说明过题意了,那里的map裸跑1500ms+,用assign优化之后跑出900ms+,尝试hash跑出188ms,时间上的优化是非常巨大的。【本题AC代码,Hash】#include #include #include #include using namespace std;#define CLE(a,b) memset(a,b,s原创 2016-03-08 16:55:44 · 530 阅读 · 0 评论 -
SGU 4554 Boring Game 来自队友的神奇随机Hash
题目链接:http://acm.scu.edu.cn/soj/problem.action?id=4554DescriptionOne day, Yutta and Rikka were playing a game. There were a N*M matrix. Every time Yutta picked up a submatrix which has w elements, and原创 2017-04-26 10:51:05 · 734 阅读 · 0 评论