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

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

点击右上角即可分享
微信分享提示