![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
模板
200815147
这个作者很懒,什么都没留下…
展开
-
高精度模板
高精度模板原创 2017-11-04 09:38:51 · 175 阅读 · 0 评论 -
线性基
定义:通过原集合S的某一个最小子集S1使得S1内元素相互异或得到的值域与原集合S相互异或得到的值域相同(抄自百度百科)。性质:1、假设原集合最大的数为maxmaxmax,那么线性基中最多有log2maxlog2maxlog_2max个元素,每个元素的二进制位数都不同。 2、设一个线性基为ax,ax−1...a1ax,ax−1...a1a_x,a_{x-1}...a_1,那么axa...原创 2017-10-29 11:19:01 · 257 阅读 · 0 评论 -
扩展欧几里得(exgcd)
exgcd原创 2017-09-30 08:05:33 · 422 阅读 · 0 评论 -
后缀数组模板
今天学了一下倍增求后缀数组,感觉还不错。 毕竟二分hash求后缀数组适用范围实在太小了代码:char s[Maxn];int n;int t[Maxn],sa[Maxn],rank[Maxn],wr[Maxn],tmp[Maxn],y[Maxn];/*y[i]排名为i的第二关键字的第一关键字的后缀开始位置*/ void get_sa(int m){ /*先用基数排...原创 2018-04-10 17:02:18 · 179 阅读 · 0 评论 -
poj3694 Network 边双连通分量
题解:边双模板。做法显然是先对原图跑一遍边双,然后每次加一条边,若两点属于同一个边双连通分量,那么答案不会改变;否则这两个连通分量路径上的边全都变成非割边。这个当然可以可以用树链剖分,但是看了题解有更为简洁的做法:用并查集维护每个点往上的第一条割边,这样每条边只会被删一次,代码写起来也十分简单。代码:#include<cstdio>#include<cstring&...原创 2018-09-14 21:34:26 · 210 阅读 · 3 评论 -
3331: [BeiJing2013]压力 点双连通分量+树上差分
题解:点双模板+树上差分。 点双求法:由于一个割点会属于多个点双,所以必须在Tarjan的时候,找到一个割点就把栈中的所有点加上这个点组成一个点双连通分量。 说实话树上差分我都不会了…… 树上差分就是如果给(x,y)(x,y)(x,y)这条路径上+1+1+1,那么d[x]++,d[y]++,d[LCA(x,y)]−−,d[fa[LCA(x,y)]]−−d[x]++,d[y]++,d[LC...原创 2018-09-14 21:53:42 · 216 阅读 · 1 评论 -
FWT入门
1、用途解决一些位运算的卷积,如:ci=∑j∣k=iaj×bkc_i=\sum_{j|k=i}a_j\times b_kci=∑j∣k=iaj×bkci=∑j&k=iaj×bkc_i=\sum_{j\&k=i}a_j\times b_kci=∑j&k=iaj×bkci=∑j⊕k=iaj×bkc_i=\sum_{j\oplus k=i}...原创 2018-12-28 20:20:43 · 325 阅读 · 0 评论