![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Hash
里阿奴摩西
这个作者很懒,什么都没留下…
展开
-
[Hash 倍增Floyd] BZOJ 2085 [Poi2010]Hamsters
Po姐的题解:http://blog.csdn.net/popoqqq/article/details/44077515搬运下复杂度分析吧这不会T?首先设第i个字符串的长度为ai,设k=Σai易知当计算f[i][j]时的复杂度是O(min(ai,aj))那么现在的问题就是当k固定时,最大化ΣΣmin(ai,aj)我们将所有的ai排个序,容易发原创 2016-05-02 21:07:55 · 440 阅读 · 0 评论 -
[Hash] Codeforces 452F MemSQL Start[c]UP 2.0 - Round 1 F. Permutation
从左往右扫 对于当前的某个aia_i 我们只判断ai+ka_i+k和ai−ka_i-k是不是都出现过或都没出现过 要是只有一个出现 那么肯定另一个在后面 不合法 对于出现情况我们hash下 可以用线段树或树状数组维护 为什么我这么长#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typede原创 2017-03-14 10:45:16 · 686 阅读 · 0 评论 -
[字符串Hash DP] Codeforces 613E #339 (Div. 1) E. Puzzle Lover
写这个东西的时候很需要冷静 一些细节 比如特殊情况不可避免的重复计算 很恶心 然后 自然溢出被sxbk的hacker卡了 我还因此去学习了怎么卡 构造串卡掉自然溢出BY PoPoQQQ#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>#define cl(x) memset(x,0,sizeof(x)原创 2017-04-09 20:40:37 · 883 阅读 · 0 评论 -
[边双连通分量 Hash] BZOJ 4435 [Cerc2015]Juice Junctions
是不是只有我以为这是最小割树裸题 然后SB地大力分治跑最小割因为一个点度数不超过3 那么答案就是 0 1 2 3 先不在一个连通块的是0 在一个连通块但不在同一个边双里的是1然后怎么分辨 2 和 3 为2当且仅当存在删去某一条边 两个点不在同一个点双里 为3 也就是两个点所在的点双完全一样 我们尝试删除每条边 然后hash一下就好了#include<cstdio>#include<cst原创 2017-04-13 17:45:04 · 632 阅读 · 0 评论 -
[仙人掌同构 Hash] Codeforces Gym 100307 NEERC 13 C. Cactus Automorphisms
其实就是BZOJ3899的加强版 当时写的东西真是不敢恭维还是看Po姐的题解吧 我们把仙人掌拆成圆方树 就可以直接用树hash来做 先找重心 因为我写的时候把两个点也当做点双 那么所有边都是圆方相接如果重心有两个 去代表环的方点就好了 接下来是hash 圆点没问题 子树排完序hash 顺带记一下如果有相同 答案乘上出现次数的阶乘 不是根的方点 也就是一个环 是有顺序的 不能排序 然后看一原创 2017-04-20 07:34:46 · 905 阅读 · 0 评论 -
[随机 Hash] Codeforces 799F Round #413 F. Beautiful fountains rows
就是给题目中给出的每个区间随一个值 然后判断一个区间是否合法 把区间内所有数xor和 再xor上 区间中出现过的所有数的xor和 为 0 前缀和统计下 本人脸黑 单hash交了好几发都是WA 迫不得已双hash#include<cstdio>#include<cstdlib>#include<algorithm>#include<vector>#include<map>#include原创 2017-05-20 07:29:01 · 864 阅读 · 0 评论 -
[Hash] 2017 计蒜之道 初赛 第五场 UCloud 的安全秘钥
判断两个可重集是否相同,给每个元素一个随机的 64 位无符号整数权值,然后全部加起来作为集合的 Hash 值。那么一个子串的 Hash 值可以简单地由前缀和作差得到,每次检验的复杂度为O(1)。其实只要一个观察 询问中不同的长度只有O(l√en)O(\sqrt len)种 map竟然T了 smg#include<cstdio>#include<cstdlib>#include<algorit原创 2017-06-06 15:02:58 · 505 阅读 · 0 评论 -
[Hash] BZOJ 4076 [Wf2014]Maze Reduction
第一眼觉得和一道题莫名相似,实际上并没有什么关系ft,i,jf_{t,i,j}表示从第 ii 个点,第 jj 扇门出发,走 tt 步所有情况的Hash值,那么很好转移一开始假设掉在房间中间,那我们按照顺序把所有点走过去一遍,取个最小表示,Hash在一起最后Hash值相同的就是等价了#include<cstdio>#include<cstdlib>#include<vector>#include原创 2017-06-17 18:11:24 · 481 阅读 · 0 评论 -
[分块 随机Hash] Romanian IOI 2017 Selection #6 Jolteon
传送门问有多少个区间,出现过的数出现次数都是奇数 给每个数随机一个hash值 然后区间中所有数的xor和 和 所有pre<l≤i≤rpre< l \le i \le r的数的异或和 相同 那么就合法 枚举右端点,新增一个数会对一段造成影响 变成区间异或,区间是否存在一个数,分块维护#include<cstdio>#include<cstdlib>#include<algorithm>原创 2017-07-01 22:41:16 · 786 阅读 · 0 评论 -
[最短路 主席树 Hash] Codeforces 464E #265 (Div. 1) E. The Classic Problem
很棒的数据结构练习题 因为边权太大了 我们不能直接储存 我们用主席树! 比较直接从高位到低位找第一个不同的位 可以Hash下 每次加法 我们找到这一位之后第一个0 那么0变为1 0之前一连串1都变成0 这里有个小trick可以不用打标记 我们先建一棵全0的线段树 清0直接找到对应节点接上去就好了#include<cstdio>#include<cstdlib>#include<algo原创 2017-03-17 20:53:14 · 808 阅读 · 0 评论 -
[字符串Hash 线段树] AOJ 2734 Donut Decoration
考虑把每个点看成一个可以在后面加字符的字符串 每次区间加一个字符串 相当于对区间的hash值做一次运算 这个直接线段树就行了#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef unsigned int uint;inline char nc(){ static char buf原创 2017-03-03 20:56:28 · 343 阅读 · 0 评论 -
[后缀自动机 模板题 || 字符串Hash] HDU 4622 Reincarnation
题目大意:询问子串lr的不同子串数目 暴力建n次后缀自动机 存一下不同子串数目就好啦 不同子串数目 有两种做法 一种是按拓扑序DP 还有就是∑maxs(x)−maxs(fa(x))\sum maxs(x)-maxs(fa(x)) 显然第二种方法更好些 更通用#include<cstdio>#include<cstdlib>#include<algorithm>#include<cs原创 2017-01-29 22:16:36 · 657 阅读 · 0 评论 -
[Hash] BZOJ 4236 JOIOJI
把 (y-x,z-x)hash 一下就好了#include#include#includeusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1==p原创 2016-06-06 07:33:49 · 381 阅读 · 0 评论 -
[堆 思路题] BZOJ 4524 [Cqoi2016]伪光滑数
可持久化可并堆+DP:http://blog.csdn.net/liuguangzhe1999/article/details/51132255我也不想这个有趣的方法就这么绝迹了呢 但是我不会打堆:http://blog.csdn.net/dropd/article/details/51138254#include#include#include#incl原创 2016-04-18 20:37:11 · 568 阅读 · 0 评论 -
[Hash] BZOJ 4337 树的同构
哈希函数 自己乱搞一个就行了#include#include#include#include#define cl(x) memset(x,0,sizeof(x))#define M 13000007#define V G[p].vusing namespace std;typedef long long ll;inline char nc(){ static char原创 2016-02-04 19:56:20 · 1134 阅读 · 0 评论 -
[KM 树同构Hash DP] BZOJ 3197 [Sdoi2013]assassin
丢下题解跑:http://blog.csdn.net/PoPoQQQ/article/details/43206463#include#include#include#include#define cl(x) memset(x,0,sizeof(x))using namespace std;typedef unsigned long long ull; inline c原创 2016-07-04 19:03:23 · 566 阅读 · 0 评论 -
[仙人掌同构 Hash] BZOJ 3899 仙人掌树的同构
Po姐说:http://blog.csdn.net/PoPoQQQ/article/details/46830025仙人掌hash现在变成了仙人掌,那么我把每个环变成一个红点连向环上的所有点,然后把原先环上的边拆除,可以得到一棵树,按树同构做就行了为了区分红点和普通点的区别,需要为红点设置不同的哈希参数但是这样有一个BUG,就是原先环上的点是有顺序的,而变成树之后也原创 2016-07-02 00:18:02 · 785 阅读 · 0 评论 -
[DP Hash] 51Nod 1055 最长等差数列
讨论帖:http://www.51nod.com/question/index.html#!questionId=79DP[i,j]表示以第i个数为倒数第2项,第j个数为最后1项,可以组成的等差数列的长度然后hash记一下一个数上次出现的时间这是一篇专门解决这个问题的论文http://www.cs.uiuc.edu/~jeffe/pubs/pdf/arith原创 2016-11-17 07:41:23 · 778 阅读 · 0 评论 -
[BFS 排列Hash] POJ 1184 聪明的打字员
论文:鬲融--浅谈特殊穷举思想的应用把排列给hash了 不过并不快 #include#include#include#includeusing namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)原创 2016-12-09 09:59:46 · 397 阅读 · 0 评论 -
[点阵图同构 Hash] POJ 1021 2D-Nim
做博弈做着做着做到了这样一道题 汗 对于每个连通块hash一下 大概有两种方法连通块内两两距离的平方和每个点向四个方向最多能走的距离的平方和的和具体 我没写过原创 2017-02-28 19:12:54 · 564 阅读 · 0 评论 -
[主席树 Hash] Codechef JUNE17 #CLONEME Cloning
对权值建主席树 然后对于区间[a,b],[c,d] 在主席树上二分排完序后从左第一个不一样的地方 以及从右第一个不一样的地方 这个可以Hash下权值的出现次数,也是可以相减的#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef unsigned long long ull;inlin原创 2017-06-13 20:19:59 · 471 阅读 · 0 评论