随笔分类 -  字符串——哈希/树哈希/哈希表

摘要:IX.[CSACADEMY]Card Groups \(40\) 的数据范围让人不能不往Meet in Middle的方向去想。 于是我们枚举前一半卡的取值,压进 map 里,然后枚举后一半卡的取值,在 map 中找到与它能配上的前一半取值,更新答案即可。 时间复杂度 \(O(20^2\times2 阅读全文
posted @ 2021-04-06 14:48 Troverld 阅读(72) 评论(0) 推荐(0)
摘要:I.CF1423N BubbleSquare Tokens 神仙构造题。 首先,我们令所有点初始都没有放币,所有边上都放了一个币。则此时每个点的权值即为它的度数。 然后,我们考虑从小到大计算每个点的权值。对于每个点$i$,我们枚举它所有相邻且编号比它小的点,假如该点上没有币,就把币从连接两点的边上移 阅读全文
posted @ 2021-04-06 14:30 Troverld 阅读(81) 评论(0) 推荐(0)
摘要:3.杜教筛 之前在做莫反的题时,有很多题都需要用到杜教筛,因而我非常不爽。因此便来研究杜教筛了。 杜教筛可以干什么? 在非线性时间内(准确说,\(O(n^{\frac{2}{3}})\))求出某些积性函数的前缀和。例如,\(\sum_{i=1}^n\mu(i)\)。 怎么办呢? 假设我们要求$S(n 阅读全文
posted @ 2021-04-05 21:36 Troverld 阅读(55) 评论(0) 推荐(0)
摘要:XLI.[NOI2017] 蚯蚓排队 算算数据范围,可以哈希,只需要将所有长度在 \(50\) 以内的串扔进哈希表,然后询问时找到对应的串的出现次数即可。 这里的哈希表必须用双哈希,其中第一维开在数组范围内,然后第二维作为链表挂在后面,因此范围可以无限大。不过因为要在 int 内处理,因此我两个模数 阅读全文
posted @ 2021-04-02 23:09 Troverld 阅读(116) 评论(0) 推荐(0)
摘要:XXXVIII.[NOI2016] 网格 首先,答案一定 \(\leq2\),因为四个角的跳蚤被围住只需要两个蛐蛐,而如果蛐蛐占住了一个角又会产生新的角。 \(-1\) 的情形比较容易,要么空隙少于 \(2\) 个,要么仅剩的两个空隙在一起。两种情况下 \(n\times m\) 都与 \(c\) 阅读全文
posted @ 2021-04-02 23:02 Troverld 阅读(282) 评论(0) 推荐(0)
摘要:X.CF650D Zip-line 我们考虑在修改一个位置后,新的LIS可能有哪些。 就是原序列中的LIS。 设原序列LIS长度为$len$。 此时有两种可能: A.被修改的位置在LIS中不是不可替代的(换句话说,有至少一条LIS不经过此位置)。此时,长度就是$len$。 B.被修改的位置在LIS中 阅读全文
posted @ 2021-04-02 16:11 Troverld 阅读(120) 评论(0) 推荐(0)
摘要:XIV.[URAL2085]Magic Programmer 如何处理路径上所有东西出现且只出现一次的限制呢?我们考虑哈希。只需要用一个哈希表处理所有出现过的东西,然后求另一半东西时,找出它的补集的哈希值在哈希表中查询,即可做到路径拼接。 代码: #include<bits/stdc++.h> us 阅读全文
posted @ 2021-04-01 13:09 Troverld 阅读(68) 评论(0) 推荐(0)
摘要:XXI.[NOI2016]优秀的拆分 这后缀数组越来越像一个用来求$\operatorname$的工具人了…… 对于一个$\text\(的拆分,我们可以在中间切一刀,变成\)\text\(与\)\text$两半。这时,我们只需要设$a_i$表示以$i$为结尾的$\text$串数量,$b_i$表示以$ 阅读全文
posted @ 2021-04-01 10:55 Troverld 阅读(98) 评论(0) 推荐(0)
摘要:XI.[APIO2014]回文串 题解 阅读全文
posted @ 2021-04-01 10:33 Troverld 阅读(49) 评论(0) 推荐(0)
摘要:V.[SCOI2007]压缩 这种DP状态需要考虑到各种状态的题最讨厌了…… 思路1.设$f[i][j]\(表示将区间\)[i,j]$里面所有东西压一起的最小代价 有两种转移: 砍成两段拼一起 样例里面这种方法,MaRR=aaaa 这种倍增法 然后我就写出了这样的代码: #include<bits/ 阅读全文
posted @ 2021-03-30 14:50 Troverld 阅读(73) 评论(0) 推荐(0)