07 2021 档案
摘要:史上最易懂的后缀自动机讲解!独创理解思路还有例题讲解~ O(nlogn) #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=100010; int wa[N],wb[N],wv[N],wss[
阅读全文
摘要:题链 通俗易懂 这份代码O2优化才能过 #include <bits/stdc++.h> using namespace std; #define eps 1e-6 #define MS 300009 #define LL long long // 洛谷 P3803 【模板】多项式乘法(FFT) /
阅读全文
摘要:题链 套了题解区的板子 #include <bits/stdc++.h> using namespace std; #define LL long long #define MS 1000009 int n,m; int p1[MS], p2[MS]; double ac[MS<<1]; // 洛谷
阅读全文
摘要:题链 对于一个区间有如下数字{5,6,7,8},他们的二进制表示分别为: 5:0101 6:0110 7:0111 8:1000 那么这区间数的总和可以这么计算: 1*(23) + 3*(22) + 2*(21) + 2*(20); 其中(2^i)次方前的系数就是第i位的1的个数之和 将他们异或上一
阅读全文
摘要:题链 线段树维护矩阵模板题 #include <bits/stdc++.h> //#pragma GCC optimize(2) using namespace std; #define LL long long #define ll long long #define ULL unsigned l
阅读全文
摘要:题链 首先点分治; 由于求解的是小于等于k的个数,于是开一个树状数组维护前缀和即可; #include<bits/stdc++.h> using namespace std; #define LL long long #define MAXN 20009 #define MS 40009 int n
阅读全文
摘要:题链 点分治模板题 #include<bits/stdc++.h> using namespace std; #define ll long long #define LL long long #define MAXN 9 #define MS 20009 LL n,m; struct node{
阅读全文
摘要:题链 单调栈非常好的讲解 #简单易懂 利用单调栈:寻找比p[i]小的下一个值的位置和上一个值的位置; #include<bits/stdc++.h> using namespace std; #define ll long long #define LL long long #define MS 3
阅读全文
摘要:题链 点分治分为四步: 1.找到树的重心 2.删除树的重心 3.处理经过重心的路径 4.处理重心的子树 详解来自BiliBili #include<bits/stdc++.h> using namespace std; #define LL long long #define MAXN 100000
阅读全文
摘要:#include <iostream> #include <cstring> #include <iomanip> #include <algorithm> #include <queue> #include <stack> #include <vector> #include <set> #inc
阅读全文
摘要:struct node { double x,y; } p[MS]; node get_center(double x1,double y1,double x2,double y2,double x3,double y3) { double A,B,C,D,x,y,r; double x1x1 =
阅读全文
摘要:题链 树形dp 令f[u]表示以u为根的子树需要的最小点数; 令g[u]表示以u为根的子树未被截断的点数; 对于一个点u,其孩子节点v; f[u] = $\sum_$f[v]; g[u] = $\sum_$g[v]; 若u是关键点: 则需要截断子树中未被截断的点: f[u] += g[u]; g[u
阅读全文