随笔分类 - 哈希
摘要:传送门 第一道插头 dp 由于讲不清楚所以假装各位早就会插头 dp 了 首先要的是一个闭合回路,所以可以用括号表示法表示状态,然后大力分类讨论 1. 没有右插头和下插头 那么我们可以啥也不干,或者加一个右插头和下插头 2. 只有下插头没有右插头 那么我们可以要把下插头继续延伸,可以向
阅读全文
摘要:传送门 哈希 dfs 枚举所有节点,进入时哈希值加一个左括号,把所有儿子哈希值加入,退出时加一个右括号 因为儿子的顺序可以任意,所以要把儿子哈希值 sort 以后再顺序加入 因为根节点不确定,所以枚举所有节点作为根都算一遍哈希值 比较的时候同样把所有根的哈希值排序后顺序比较,只要有一个不同就
阅读全文
摘要: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
阅读全文