哈希
Wuliwuliii
谁无暴风劲雨时,守得云开见日明!
展开
-
Bracket Sequences on Tree【哈希+随机数+树DP】
题目链接 HDU-6647 有一棵N个点构成的无根树,我们可以任选一点开始进行dfs跑,得到一个括号序,现在我们想知道跑完整个dfs,有多少种括号序? 于是,可以比较容易的想到,我们可以推一个dp方程来解出从一个点出发,得到的方案数,假设表示以u为子树的根节点时候的跑完下面子树的种类数,那么可以看到,其中,表示u的不同形态的子树的个数。 于是,我们可以根据这个式子来进行DP得到目前假设的根节点的值,然后再根据该式子可以进行换根DP得到剩下以每个点为根时候的答案值,当然,当以它为根时候的树跟...原创 2020-09-04 20:24:10 · 249 阅读 · 0 评论 -
Boboniu Walks on Graph【CF-1395E】【哈希】
题目链接 有N个点的,M条有向边组成的图,每个点的出度都小于等于K,现在要求我们求这样的K元组意思是出度为i的点,选择边权第小的边走,最后要求满足所有的点一定是能走回该点。 那么,题意其实也就是每个点最后只有一条出边,并且因为要求形成环,所以每个点最多被进一次(不然就一定是无解的)。 所以,这道题就是去枚举,然后如何记录状态呢?最开始的时候我想了个bitset<maxN>的解法,但是发现其实这样会很多元素会被多次处理,所以这样的做法就浪费了,所以我们不如直接使用哈希,复杂度O(...原创 2020-09-01 16:46:50 · 215 阅读 · 0 评论 -
Isomorphic Strings【HDU-6863】【哈希】
2020 Multi-University Training Contest 8 I 有一个长度为N的只包含小写字符的字符串,现在问你,能否将这个字符串分成K个等长的字符串,使得每个字符串作为字符串环的时候,他们是相等的。 这题对unordered_map好像不是很友好,我开vector来存就过了,不然就TLE。 然后,我们可以对所有的因子处理出来,然后,对于枚举长度为len的时候,只需要把第一个串的len种字符串环的哈希值都存进去就可以了,后面的几个字符串只需要直接判断就可以了。 ...原创 2020-08-14 11:45:15 · 188 阅读 · 2 评论 -
[SDOI2007]游戏【哈希+DAG拓扑】
题目链接先通过哈希确定点,这里我使用的是双值哈希。然后利用哈希判断可以和前面的出现的点如何链接。之后构造出来的图一定是一副DAG图,有向无环图,所以直接拓扑排序DP即可。#include <iostream>#include <cstdio>#include <cmath>#include <string>#include &l...原创 2020-02-15 17:22:46 · 288 阅读 · 0 评论 -
Log Concave Sequences 【Gym - 102302H】【矩阵快速幂】
Log Concave SequencesGym - 102302H 题目中说到,对于每个,有,于是乎,我们可以看成是多个三元组的合并了。 那么,又该如何去计算答案呢?我们不妨看成多个基础三元组的方案了,这样的形式,有,于是方便与去构造这样的方案,我们可以看成i到j和j到k两条路,于是就是通过路径来求解了。 我们看成路径和于是,我们哈希第一条路径,因为他们的值是0~2的,所...原创 2020-02-10 15:33:09 · 331 阅读 · 0 评论 -
Tree-String Problem 【CodeForces - 291E】【倍增(LCA)+哈希】
题目链接题意:给你N个点的树,树上的边的权值是一个自上往下的字符串,然后我们再给出一个字符串,是模式串,我们现在想知道模式串在树上的出现次数,譬如说样例。 我们查找的是aba,它在1——4这条链上出现了2次,在1——5上出现1次,在2——3上出现2次,在2——6上出现1次。这道题的做法不是唯一的,譬如说AC自动机也可以解决这个问题。 思路:因为长度确定为模式串的长度,...原创 2020-01-07 10:31:13 · 589 阅读 · 0 评论 -
unordered_map的哈希HASH重载——举例unordered_map与pair联合使用
有些时候,为了图省力,我们没准会这样的调用一个函数unordered_map< pair<int, int>, int > mp;但是很显然的是,这样的写法是会报错的,因为pair还没有HASH键值。error: call to implicitly-deleted default constructor of 'std::__1::hash<std:...原创 2019-12-18 15:36:46 · 4052 阅读 · 3 评论 -
Interconnect【POJ 3156】【哈希+期望dp详解】
题目链接 很好的一道题,真的捋清了什么是真正的期望,然后这道题有很多人拿的是位运算做的…… (或许我觉得unsigned long long比较的简单吧,但是由于它容易被hack,所以我打了双哈希)。 那么好的题,好多人都是一笔带过,但是这道题是真的有点东西的,我们知道题目中给到的,一共有N个点,并且有M条边已经是连好的,但是由于题目中说的那样,我们还有可能会链接到已经连上的边,所以,...原创 2019-01-11 10:57:29 · 237 阅读 · 0 评论 -
Supermarket 【POJ - 1456】【并查集+哈希表思想+贪心】
题目链接 原来,并查集还有这样的作用——题记。 我想用个哈希表的思维来解这道题,但是,显然O(N^2)的哈希表去查询并插入显然是不行的,那么既然挂在图论专题,我就得用相应的方式解答咯(要是不挂在图论专题,我可能会自闭了),我们对于每个物品按照价值降序排列,要的就是价值高的物品先放进哈希表中,但是,怎么确定这个点的值是否已经有值了? 我们用到了并查集,对于可以放进哈希表中的值,相当...原创 2018-12-18 22:46:02 · 205 阅读 · 0 评论 -
字符串匹配的KMP算法(后期不断学习后更新)【学习日记】
(网上的说法)10月24日·第一天的学习学习任务:这天我们先来了解一下什么是KMP,并且先不看代码自己揣测下应该如何去写这样的代码。举例来说,有一个字符串“BBC ABCDAB ABCDABCDABDE”,我想知道,里面是否包含另一个字符串“ABCDABD”?1。首先,字符串“BBC ABCDAB ABCDABCDABDE”的第一个字符与搜索词“ABCDABD”的第一个字符...原创 2018-10-24 20:38:31 · 644 阅读 · 0 评论 -
Oulipo 【HDU - 1686】【哈希 | KMP】
题目链接求模式串在待匹配串的出现次数。Input第一行是一个数字T,表明测试数据组数。之后每组数据都有两行:第一行为模式串,长度不大于10000;第二行为待匹配串,长度不大于1000000。所有字符串只由大写字母组成。Output每组数据输出一行结果。 直接上哈希就是了——当然,这里用到的是KMP优化过后的哈希处理。细节是,不要用取mod,直接用无符号类型,...原创 2018-10-23 15:35:12 · 176 阅读 · 0 评论 -
Subpalindromes 【URAL - 1989】【线段树+哈希hash】
题目链接一道线段树单点更新加上哈希的简单题。。。完整代码:#include <iostream>#include <cstdio>#include <cmath>#include <string>#include <cstring>#include <algorithm>#include <li...原创 2018-10-21 17:21:03 · 274 阅读 · 2 评论 -
Long Long Message 【POJ - 2774】【哈希hash+二分】
题目链接 看到题面发现还不是特别好推的,一开始想法O(N^2)肯定会T,所以就想到了用哈希,然后这道题又是找字符串中的子串,所以哈希直接找就是,我们找中间长度为x的字符串,是否在后面的查询字符串中出现过,若是出现过,说明此时的x还不一定是最优解,继续往下判断。完整代码:#include <iostream>#include <cstdio>#includ...原创 2018-10-21 16:17:33 · 901 阅读 · 0 评论 -
魔咒词典 【HDU - 1880】【双值哈希】
题目链接 这道题更多的感觉是在考你对于字符类型的处理,用了scanf("%s")不行,然后转用gets()然后就可以正常输入输出了,最后有一件很神奇的事,不要用G++,有毒:同样的代码,我用了C++交就过了。#include <iostream>#include <cstdio>#include <cmath>#include <...原创 2018-10-21 13:52:11 · 390 阅读 · 0 评论 -
Crazy Search 【POJ - 1200】【哈希】
题目链接题意:给定一个字符串,其中含有不同的字母数量为m,现在求这个字符串中有多少个长度为n且长的互不相同的字符子串 举个例子, n=3, m=4 ,字符串 "daababac". 长度为3的不同的子串分别是: "daa"; "aab"; "aba"; "bab"; "bac". 因此, 答案是5. 思路:这里没有给N、M的范围,但是要知道字符串的数量最多是255(还不知原创 2018-10-21 10:01:37 · 170 阅读 · 0 评论 -
Kefa and Watch 【CodeForces - 580E】【双值哈希hash+线段树】
题目链接 题意不难,给你一段长度为N的字符串,接下来就是有两种操作:一是更新一段区间让它们的值相同;二是问这个查询的区间是否符合f(i)==f(i+d),就是是否以d为周期长度。思路: 确实想了挺久的,首先是字符串,这里就需要用到哈希的方式来处理,一开始哈希没弄好,错了,后来再重做时加上了取mod的操作然后就过了,还有,如何判断它是一个以d为周期长度的字符串呢?就利用f(i)==f...原创 2018-10-22 19:44:06 · 294 阅读 · 0 评论 -
Oulipo 【POJ - 3461】【双值哈希】
题目链接题意:给你两个字符串,前一个是小字符串,后一个是大的字符串,问你,大的字符串中有几组可以与小的字符串相等的子字符串。此题其实不用双值哈希好像也可以的,但为了确保A就敲了个双值哈希,我们想把字符串的形式用数的值来表示,那么,我们可以用到哈希来转换它,而双值哈希的目的就是为了减少被Hack的可能性。完整代码:#include <iostream>#include...原创 2018-10-19 20:29:09 · 253 阅读 · 0 评论 -
Mines【HDU - 4400】【离散化+BFS+STL】
题目链接 思路爆炸!!!这道题简直了,我写这片文章给自己理清思路,也给读者一个清晰的写法。 思路: 很明显的离散化,点少、值大,所以用了离散化,怎么离散化呢??我的想法就是对于x我们进行离散化,然后只需要去找符合条件的y即可确定爆炸与否(题目还是人性化的给的是曼哈顿距离,不然真的是得有KD-Tree还真不会),我们在输入的时候把x存入x_hash[]的数组中去,存完后对x_ha...原创 2018-09-25 17:39:41 · 264 阅读 · 0 评论 -
Doing Homework again【暑期集训R题】【DP】【哈希】
Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Every teacher gives him a deadline of handing in the homework. If Ignatius hands in the homework after th...原创 2018-07-08 21:04:19 · 358 阅读 · 0 评论