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 · 231 阅读 · 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 · 172 阅读 · 0 评论 -
Subpalindromes URAL - 1989
点击打开链接每次修改字符串中的一个字符 然后问某个区间是否为回文串 这个要用的多项式哈希 在这里就是把采字符串当做26进制数 然后比较从左至右 和从右至左的哈希值是否相等#include <bits/stdc++.h>using namespace std;#define ll unsigned long longstruct node1{ int l; ...原创 2018-04-20 08:48:00 · 204 阅读 · 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 · 187 阅读 · 0 评论 -
Gap HDU - 1067
点击打开链接第一次用哈希 感觉和状压就是一回事。。#include <bits/stdc++.h>using namespace std;#define M 1000007struct node{ int t[10][10]; int s;};queue <node> que;int num[10][10],tar[10][10]...原创 2017-11-03 20:26:22 · 313 阅读 · 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 · 202 阅读 · 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 · 149 阅读 · 0 评论