Hash
·马克图布·
如果人生真的可以分为几个阶段的话,那么我现在就在感觉自己很普通,并一无是处的那个阶段。
展开
-
Hash方法
> 1. 直接相加, 把(总和%大质数)为key. > 2. 平方和相加, 把(总和%大质数)为key. > 3. 从小到大的顺序, 对v[i]<<(i*3)依次异或, 然后模一个大质数作为key.(by hust07p43) > 4. 六个数中非零数的积再乘上一个大质数,然后模一个100w上下的数。 自己拿随机数据测下来110w左右的效果最好,随机情况...原创 2019-10-19 21:56:04 · 602 阅读 · 0 评论 -
D. Good Substrings(Trie树高效判重)
题目链接———— 题意大致是给一个字符串s,然后给26个字母一个权,0或者1,0代表着坏字符,1代表着好字符。然后给你给你一个k,求所有s的坏字符少于k的子串。 Trie树,一般分建树和查询。这个题目可以把建树和查询放在一起。大大提高效率! AC Code: #include<bits/stdc++.h> using namespace...原创 2019-08-25 15:30:54 · 251 阅读 · 0 评论 -
poj1200 Crazy Search(滚动哈希)
题意大致是给你两个整数 n和m,然后给你一个字符串s。然后问你s中有多少个长度为n的不同子串。 思路:滚动哈希练练手,发现还是比较好用的。这个题目用set统计会超时,插入排序都是logn,不如先存到vector里,然后排个序去个重。 #include<iostream> #include<algorithm> #include<cstring> #incl...原创 2019-08-25 20:21:24 · 248 阅读 · 0 评论 -
D. Complete Tripartite(Hash)
题意: 现在给出一张n个点m条边的无向图,没有自环和重边, 问能否将点分成三个集合,使得集合内部的点之间没有边相连,但任意两个点(他们分属不同的集合)有边相连。如果可以,输出方案,否则输出 -1。 思路:借鉴别人的哈希做法。如下图,对于一个点集中的所有点,都会有其他点集中的点与其连边,所以我们可以把从一个集合到另一个集合的边看做是相同的,然后附上权值就可以了。 附上dalao的AC Cod...原创 2019-10-05 16:22:05 · 207 阅读 · 0 评论