HASH
sunyutian1998
这个作者很懒,什么都没留下…
展开
-
时钟 51Nod - 1282
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1282 每个钟表有m个状态 每个状态hash为一个三进制数 只用最小的一个来表示该状态即可 因为两个钟表同构的话 每个状态hash出的值都是一样的 最后并查集求出答案即可 复杂度n*n*logn #include <bits/stdc++.h> usin...原创 2018-09-28 15:41:37 · 245 阅读 · 0 评论 -
前缀后缀集合 51Nod - 1280
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1280 把每个数都hash为3^p p为该数去重后是第几大的 一开始智障hash为2^p 2^64直接变为0.。 #include <bits/stdc++.h> using namespace std; typedef unsigned long l...原创 2018-09-28 12:47:51 · 182 阅读 · 0 评论 -
Subpalindromes URAL - 1989
点击打开链接 每次修改字符串中的一个字符 然后问某个区间是否为回文串 这个要用的多项式哈希 在这里就是把采字符串当做26进制数 然后比较从左至右 和从右至左的哈希值是否相等 #include <bits/stdc++.h> using namespace std; #define ll unsigned long long struct node1 { int l; ...原创 2018-04-20 08:48:00 · 214 阅读 · 0 评论 -
Fliptile POJ - 3279
点击打开链接 第一行的每个格子按或不按两种选择 m列则有2^m种情况 通过dfs确定 每一个元素都只能通过按下下一行的同列格子来改变 最后看一下第n行是否全为0即可 #include <stdio.h> #include <cstring> #include <algorithm> using namespace std; #define N 0x...原创 2017-11-03 21:49:33 · 199 阅读 · 0 评论 -
Gap HDU - 1067
点击打开链接 第一次用哈希 感觉和状压就是一回事。。 #include <bits/stdc++.h> using namespace std; #define M 1000007 struct node { int t[10][10]; int s; }; queue <node> que; int num[10][10],tar[10][10]...原创 2017-11-03 20:26:22 · 337 阅读 · 0 评论 -
Kefa and Watch CodeForces - 580E
http://codeforces.com/problemset/problem/580/E 两种操作 一是将区间全部改为某个数字 二是询问一个区间内的数字串是否具有周期性 大体思路是 线段树维护区间哈希值 设周期为t 先查[l,l+t-1] [l+t,l+3t-1] [l+3t,l+7t-1]...这些段 看两个上一段拼起来是否等于当前段 再用同意方法反过来查右边 两边肯定在中间会合 单...原创 2018-11-15 14:23:11 · 211 阅读 · 0 评论 -
The Missing Number PAT甲级 - 1144
https://pintia.cn/problem-sets/994805342720868352/problems/994805343463260160 题目思路: 哈希函数构造方法:H(key) = key % TSize (除留余数法) 处理冲突方法:Hi = (H(key) + di) % TSize (开放地址发——二次方探测再散列) 其中di为 1*1 , -1*1 , 2*2 ...原创 2018-12-09 12:06:56 · 159 阅读 · 0 评论