
板子
lushanlushan0026
退役acmer,准研究生
展开
-
类欧几里得板子
一下为三个基本的可用类欧几里得求解的式子其中(结论来自Great_Influence大佬的博客)采用递归的形式实现就可以了 如果是更一般的形式如 使用万能欧几里得会更方便(待补)...原创 2020-08-12 17:27:09 · 146 阅读 · 0 评论 -
整除分块的模板
整除分块 用来求 可以在的复杂度内完成大佬的证明 简单明了:整除分块证明#include<bits/stdc++.h>using namespace std;typedef long long ll;int main(){ ll ans=0,n; scanf("%lld",&n); for(ll L = 1,R; L <= n; L=R+1){ R = n/(n/L); ans+=(R-L+1)*(n/L); } prin...原创 2020-08-02 18:29:42 · 191 阅读 · 0 评论 -
P6136 【模板】普通平衡树(数据加强版) FHQ 平衡树模板
大概确定了一下 以后就写fhq吧 splay也就lct里面用用 主要是fhq好写啊 而且也能可持久化 能旋转 啥都能干写个板子 de了我半天#include<bits/stdc++.h>using namespace std;const int N = 1e6+1e5+10;#define R register int#define I inline void#define lc(x) c[x][0]#define rc(x) c[x][1]int r...原创 2020-07-17 20:58:05 · 208 阅读 · 0 评论 -
区间第k小及其变形(整体二分法) 模板
作为不想写树套树和主席树的懒人 整体二分是个较好的方法 不过它的致命缺陷是必须离线#include<bits/stdc++.h>using namespace std;const int inf = 1e9;const int N = 4e5+10;struct node{ int l,r,k,id,op;}q[N],rq[N],lq[N];int n,m,c[N],ans[N];void add(int x,int val){ while(x<=n){ ...原创 2020-07-11 10:25:28 · 266 阅读 · 0 评论 -
舞蹈链 模板
精确覆盖#include<bits/stdc++.h>using namespace std;const int N = 260000;inline int in(){ int x=0;char c=0; while(c<'0'||c>'9') c=getchar(); while(c<='9'&&c>='0') x=(x<<1)+(x<<3)+(c^48),c=getchar(); return x; .原创 2020-06-28 21:55:48 · 316 阅读 · 0 评论 -
P4592 [TJOI2018]异或 树上可持久化trie
树上可持久化trie的板子 第一棵树按照dfs序建立 第二棵树按照遍历顺序直接在父节点的基础上建立空间开N*50 开个N*30wa了 也不re de了半天bug#include<bits/stdc++.h>#define R register intusing namespace std;const int N = 1e5+100;int h[N],to[N<<1],nex[N<<1],cur,val[N],lg[N],fa[N][30],dep...原创 2020-06-12 11:01:44 · 163 阅读 · 0 评论 -
P5787 二分图 /线段树分治 或 lct
没有奇环的图就是二分图,所以我们要想办法去维护一个图里面有没有二分图。线段树分治的做法:以时间建立线段树,对于每一条边的出现与消失时间,我们通过区间更新把这条边挂在线段树的结点上,最后对线段树进行一次遍历。搜索的时候加边,回溯撤销边。用扩展域并查集判断是否为二分图,因为要撤销边,所以并查集得是可撤销的,并且不能路径压缩,同时为了保证复杂度必须按秩合并。并查集判断二分图的方法是 对于每一条加入的边 (u,v) 如果u,v已经联通 那么不是二分图,否则合并(u,v+n),(v,u+n)整个复杂度 .原创 2020-06-11 09:01:47 · 210 阅读 · 0 评论 -
线性基模板 求n个数中任意数异或和的最大值
题目链接:线性基模板#include<bits/stdc++.h>using namespace std;const int N = 66;typedef long long ll;ll a[N],d[N];void add(ll x){ for(int i = 55; i >= 0; i--){ if((x>>i)&1){ if(!d[i]){ d[i]=x; break; } else x^=d[i]; .原创 2020-06-07 20:19:30 · 782 阅读 · 0 评论 -
洛谷 线段树分裂模板
对于0操作需要把区间x到y分裂出来变成一颗新的树(这像极了fhq的无旋treap) 我也用了类似的思想来实现线段树维护每个权值出现的个数 2,3,4操作应该都不是问题1操作的话就是线段树合并 没有什么特别的地方 对于y结点的删除 可以直接删 也可以把y结点放进内存池 我是用的内存池(不知道是不是这个名字。。。) 就是每删掉一个结点 可以把这个结点放入内存池 新建结点的时候 如果内存池有结点的话就从内存池里面取出结点 否则就新建一个结点 显然内存池可以减少空间复杂度 重复利用一些结点...原创 2020-05-26 11:55:55 · 181 阅读 · 0 评论 -
lca板子 带常数优化
#include<bits/stdc++.h>using namespace std;const int N = 2000;int h[N],nex[N<<1],to[N<<1],tot;void add(int x,int y){ to[++tot]=y;nex[tot]=h[x];h[x]=tot;}int fa[N][30],dep[N],lg[N];void dfs(int u,int fath){ fa[u][0]=fath;dep[u]=d.原创 2020-05-24 19:16:46 · 401 阅读 · 1 评论 -
整数三分/浮点三分模板
转自https://www.cnblogs.com/lukelmouse/p/12545973.html整数三分模板int l = 1,r = 100;while(l < r) { int lmid = l + (r - l) / 3; int rmid = r - (r - l) / 3; lans = f(lmid),rans = f(rmid); // 求凹函数的极小值 if(lans <= rans) r = rmid - 1; .原创 2020-05-19 21:07:39 · 648 阅读 · 0 评论 -
我的acm几何模板
部分代码来源于kuangbin的几何模板const double eps = 1e-8;const double inf = 1e20;const double pi = acos(-1.0);const int maxp = 1010;//`Compares a double to zero`int sgn(double x){ if(fabs(x) < eps)re...原创 2020-04-24 13:53:48 · 227 阅读 · 0 评论 -
RMQ(ST表)模板
#include<bits/stdc++.h>using namespace std;const int N = 1e5+10;int M[N][30];int Query(int l,int r){ int k = log2(r-l+1); return max(M[l][k],M[r-(1<<k)+1][k]);}int main(){ int n,...原创 2020-04-15 10:26:45 · 698 阅读 · 0 评论 -
c++高精度(大数)模板
暂时包括大数乘 大数乘int 大数加 大数比较大小struct Bignum{ int ct,c[50]; Bignum(){ct=0,memset(c,0,sizeof(c));}; void output(){ for(int i = ct; i >= 1; i--) printf("%d",c[i]); puts(""); } Bignum(char ...原创 2020-04-12 15:08:26 · 254 阅读 · 0 评论