![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
hash
波波i
此微博用来学习,和嘿嘿嘿。
展开
-
poj3349
题意:给你n个六个花瓣的雪莲,问你有没有两个是相同的(圆形,可以转换位置)。有输出Twin snowflakes found.不然输出No two snowflakes are alike. n<100000;花瓣0~10000000;思路:用hash,用每个花瓣的平方和mod作为key。找以前有没有出现过,有就是说明有两个是相同的,pascal的记得key要用qword。时间复杂度:基本上等于O原创 2016-12-11 19:38:04 · 334 阅读 · 0 评论 -
【CQOI2014】通配符匹配
题目大意:思路:dp加上hash优化,先设f[i][j]为做到i个匹配到了j。然后根据星号把一段字符串拆分成很多段,然后转化为hash值,和原串匹配。程序:#include #include #include #include #include #define F(i,j,n) for(int i=j;i#define D(i,j,n) for原创 2018-01-06 15:19:11 · 295 阅读 · 0 评论 -
zoj Gamblers(hash)
题意:给你n个数,其中三个加起来等于得数也在n个数里面,就输出这个数。如果有多个,就输出最大那个。n<1000思路很简单,其实就是这样一个算式: x+y+z=ans最简单就是枚举四个数,很显然会超时 枚举x,y,z也有可能会超时,这样就可以转换一下 ans-x-y=z,排序后从大枚举ans,x,y。很显然找到一个就可以了,因为是最大的ans,这里还有可能有负数,所以x或y有一个可能大于ans,原创 2016-12-10 10:01:20 · 357 阅读 · 1 评论 -
USACO 3.2 Magic Squares 魔板 (BFS-HASH)
题意:给定1234/换行/5678,用下面几种方法变到制定的数 “A”:交换上下两行; “B”:将最右边的一列插入最左边; “C”:中央四格作顺时针旋转。思路:可以发现他们三种之间有变化规律,然后就直接可以变过去。所以就一直bfs,如果以前找到的数找到过了,就不用这个节点了,在如何知道这个数有没有被找过就可以用hash来快速查找。const maxn=1000007; rule:arr原创 2016-12-09 19:33:24 · 422 阅读 · 2 评论 -
方程的解数(dfs优化)
题意: p=n x<=150正整数;思路:因为里面的乱七八糟的都是题目给你的,所以不能用数学方法做,然后就枚举一下。把他分成两份,只要前面的那一半加上后面的一半,等于0,就是方程成立的,所以就只用枚举三个未知数,时间复杂度为(m*m*m不会打次方)。然后又可以知道前面三个数和后面三个数为相反数,所以题目就变成了,前面未知数组成的数要等于后面的数的相反数,在查找过程中用到hash优化,时间复杂度忽略原创 2016-12-08 21:18:57 · 586 阅读 · 0 评论 -
统计数字(hash)
题意: 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。n<200000思路:用hash统计每个数字有多少,是什么,在排序输出const maxn=5201314;var index,indexans:array [1..maxn] of lon原创 2016-12-07 20:52:36 · 785 阅读 · 0 评论 -
集合(hash)
题意:给定一个A,B集合,分为五种情况 A是B的一个真子集,输出“A is a proper subset of B” B是A的一个真子集,输出“B is a proper subset of A” A和B是同一个集合,输出“A equals B” A和B的交集为空,输出“A and B are disjoint” 上述情况都不是,输出“I’m confused!” 思路:用has原创 2016-12-07 17:22:13 · 1123 阅读 · 0 评论 -
poj2503Babelfish(hash);
题意:给你n行单词,每行两个,让你找后面那个是否出现过,出现过就输出前面对应得单词,不然输出ch n<100000思路第一想法快排+二分,但是是hash得专项训练,就没有打快排了,hash也很简单,用字符串hash,强行转换成数字为hash得key,然后就变成普通hash了。时间复杂度hash期望O(1),加上单词书为O(n)const maxn=999987;var a,hash:arra原创 2016-12-13 17:10:23 · 350 阅读 · 0 评论 -
poj 2002 Squares(hash)
意义给你n个点的坐标,问你可以围成多少个正方形。思路 可以得出 temp.x = p[i].x + (p[i].y - p[j].y); temp.y = p[i].y + (p[j].x - p[i].x); 和 temp.x = p[j].x + (p[i].y - p[j].y); temp.y = p[j].y + (p[j].x - p[i].x); 然后就可以枚举两个点了,原创 2016-12-12 20:34:11 · 276 阅读 · 0 评论 -
P4889 kls与flag
题目大意:有nn个OI选手,每个人插了一个flag。有一天因为某种原因,flag都被触发了,所以地上有一排nn根竹竿,竹竿的间距均为一个单位长度,高度在1\sim m1∼m之间。kls看到这些竹竿,感觉不好看,于是准备把它们全部放倒。在这之前,kls想到了一个数学问题。每根竹竿可以往左倒或者往右倒。如果两根竹竿在选择方向放倒之后,它们的顶端可以重合,那么称它们是优秀的。现在kls想要知道,有...原创 2018-09-25 20:48:14 · 281 阅读 · 0 评论