随笔分类 - 哈希
摘要:传送门 因为 $K$ 是固定的,所以我们可以预处理每一段 $K$ 个的序列的哈希值,那么对于询问我们只要判断区间内是否有此哈希值即可 显然主席树维护,没了
阅读全文
摘要:传送门 第一道插头 $dp$ 由于讲不清楚所以假装各位早就会插头 $dp$ 了 首先要的是一个闭合回路,所以可以用括号表示法表示状态,然后大力分类讨论 $1.$ 没有右插头和下插头 那么我们可以啥也不干,或者加一个右插头和下插头 $2.$ 只有下插头没有右插头 那么我们可以要把下插头继续延伸,可以向
阅读全文
摘要:传送门 哈希 $dfs$ 枚举所有节点,进入时哈希值加一个左括号,把所有儿子哈希值加入,退出时加一个右括号 因为儿子的顺序可以任意,所以要把儿子哈希值 $sort$ 以后再顺序加入 因为根节点不确定,所以枚举所有节点作为根都算一遍哈希值 比较的时候同样把所有根的哈希值排序后顺序比较,只要有一个不同就
阅读全文
摘要:传送门 考虑二分答案暴力 $n^4$ 枚举两个矩形右下角,如果能做到 $O(1)$ 判断那么复杂度就可行 那么容易想到二维哈希,然后直接搞就好了... 二维哈希怎么做还是看代码吧...
阅读全文
摘要:A. Hotelier 题意:有十个位置初始为 $0$,三种操作,找到左边第一个空位,变成 $1$,找到右边第一个空位,变成 $1$,把某个位置变成 $0$ 直接模拟.. #include<iostream> #include<cstdio> #include<algorithm> #include
阅读全文
摘要:传送门 如果没有修改的操作,很容易想到 后缀数组 倍增+哈希求 LCQ 如果有修改呢,哈希值就会发生改变,这时我们就要找一种数据结构来维护哈希值 emm...改字符和插入字符.... 显然可以用平衡树维护 所以总体思路就是用平衡树维护哈希值,然后倍增+哈希求LCQ 怎么维护哈希值很容易想到,直接看具
阅读全文
摘要:传送门 哈希 首先要知道一个结论: 判断一个串s中 长度为k的串是不是循环节 的充分必要条件是: s[1]~s[len-k] = s[k] ~ s[len] 并且 len%k=0 怎么证明呢 如图: 显然红色的串=s1(因为s[1]~s[len-k] = s[k] ~ s[len]) 同样s1=s2
阅读全文
摘要:传送门 哈希 or Manacher 首先有一个很显然的结论 对于一个回文串s 每次从s的中心开始向左右扩展一步 每次扩展的串一定都是回文串 如 s=abccba 从s的中心左右扩展一步得到 cc 扩展两步得到 bccb 扩展三步就得到了 abccba = s 所以如果我们枚举中心 向左右扩展,找到
阅读全文
摘要:传送门 哈希表 枚举子串长度 k 把每个子串的哈希值加到哈希表里 用哈希表判重 因为子串可以反转 所以要两个哈希 一个从前往后,一个从后往前 复杂度为O(n + n/2 + n/3+ ... + n/n) 约等于 O(n ln n) 但是每次长度k更新都要清空哈希表 非常耗时(只有60分) #inc
阅读全文