随笔分类 -  基础算法——哈希

摘要:Contest Page A sol 每次选最小的,然后把它的所有倍数都删掉。 #include<bits/stdc++.h> using namespace std; int read(){ int a = 0; char c = getchar(); bool f = 0; while(!isd 阅读全文
posted @ 2019-09-18 22:56 cjoier_Itst 阅读(455) 评论(1) 推荐(0)
摘要:"传送门" orz ymd 考虑构造生成函数:设$F(x) = \sum\limits_{i=0}^\infty f_ix^i$,其中$f_i$表示答案为$i$的概率;又设$G(x) = \sum\limits_{i=0}^\infty g_ix^i$,其中$g_i$表示经过了$i$步之后还没有结束 阅读全文
posted @ 2019-06-26 14:35 cjoier_Itst 阅读(277) 评论(2) 推荐(0)
摘要:"整数" (线段树) 不难想到按位处理,位数比较多考虑使用动态开点线段树维护大数,那么复杂度是$O(nlog^2n)$的,不够优秀。 但注意到我们需要支持的是二进制下的加减法,而在二进制下我们可以使用int压位来节约时空,于是使用unsigned int压32位,再用线段树维护。这样每一次加减都只会 阅读全文
posted @ 2019-05-06 10:31 cjoier_Itst 阅读(579) 评论(3) 推荐(2)
摘要:HNOI2014 "世界树" (虚树、倍增) $\sum M \leq 3 \times 10^5$虚树没得跑 对于所有重要点和它们的$LCA$建立虚树,然后计算出每一个虚树上的点被哪个重要点控制。注意这里不仅要从父亲向儿子DFS一次,还要从儿子向父亲DFS一次,因为有可能某些重要点向上控制一些点。 阅读全文
posted @ 2019-02-21 20:25 cjoier_Itst 阅读(344) 评论(6) 推荐(0)
摘要:"传送门" 暴力枚举$0$的长度,如果对应的$1$的长度也是一个整数就去check是否合法。check使用字符串哈希。 复杂度看起来是$O(st)$的,但是因为$01$两个数中数量较多的至少有$\frac{|s|}{2}$个,那么最多有$\frac{2|t|}{|s|}$个可能的答案,而每一次che 阅读全文
posted @ 2019-02-02 21:47 cjoier_Itst 阅读(301) 评论(0) 推荐(0)