上一页 1 ··· 13 14 15 16 17
摘要: Trie字典树 是一种字符串的存储结构,节省空间,同时可以查询是否有字符串是其前缀,也是异或xor操作的利器。 POJ 3630 Phone List 模板: #include<algorithm> #include<cstring> #include<cstdio> const int MAXN= 阅读全文
posted @ 2022-08-13 13:33 s1monG 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 树状数组 一种可以单点修改,查询前缀和的数据结构。 每次操作$O(\log n)$ void Modify(int x,int k) { for(; x<=n; x+=x&(-x)) t[x]+=k; } int Query(int x) { int res=0; for(; x; x-=x&(-x 阅读全文
posted @ 2022-08-13 13:32 s1monG 阅读(33) 评论(0) 推荐(0) 编辑
摘要: CDQ 分治 归并排序 来自《算法导论》。 #include<algorithm> #include<cstdio> const int MAXN=1e6; int n,a[MAXN+10],l[MAXN+10],r[MAXN+10]; long long ans; void merge(int p 阅读全文
posted @ 2022-08-13 13:32 s1monG 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 哈希 选取一个指质数为底数base(通常取131,13331,1e9+7,1e9+9),一个模数(通常取 unsigned long long 中自然溢出中的$2^{64}$)。 一个字符串$d$长度为$n$,哈希值为$h_n=\sum s_i \times base^i$。 它的子串$s-t$的哈 阅读全文
posted @ 2022-08-13 13:31 s1monG 阅读(154) 评论(0) 推荐(0) 编辑
摘要: Lca 定义:对于两个点,他们的最近公共祖先 是他们的祖先(或自己) 距离最近 $f_{i,j}$表示从节点i向上跳$2^j$步能到达的节点。 将较深的点跳到深度相同。 两个节点一起跳,直到相同。 如图:3和8的最近公共祖先是1。 树的深度为5,$\log_2 5=3$。更深的是8。 $f_{8,3 阅读全文
posted @ 2022-08-13 13:31 s1monG 阅读(43) 评论(0) 推荐(0) 编辑
摘要: 单调栈 例题1:Luogu5788 求解数组中元素右边第一个比它大的元素的下标。 由于要求解的是右边第一个大的元素,所以从右往左遍历。 维护一个从右到左递减的单调栈,最右是无限高。 每当有元素将要进栈,为了维护单调性,必须把单调栈中比它小的元素全部弹出。 因为它们已经没有用了,不可能被弹出的元素是某 阅读全文
posted @ 2022-08-13 13:30 s1monG 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 二进制操作 将第k位设为1 x = x | (1 << k) 将第k位设为0 x = x & -(1 << k) 查询第k位 x & (1 << k) (x >> k) & 1 如果等于0,那么第k位是0,否则是1 状压dp 模板题:TSP问题(遍历每一个点)($n \leq 20$) 设$f_{s 阅读全文
posted @ 2022-08-13 13:30 s1monG 阅读(19) 评论(0) 推荐(0) 编辑
上一页 1 ··· 13 14 15 16 17