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