
模板
文章平均质量分 59
wu-kan
<https://wu-kan.cn>
展开
-
模板:博弈论常用SG函数
博弈论常用SG函数一个局面的 SG 为 mex(后继局面的 SG),mex 运算为集合中没出现的最小的自然数。几个 局面的和的 SG 为单个的 SG 异或,SG 不为 0 时先手必胜,SG 为 0 时后手必胜。Nim Gamen 堆石子,每次可以从一堆里面取任意个石子。对于一堆石子,SG 函数就是石子数。整个 游戏的 SG 函数是每一堆石子的 SG 函数的异或和。 必胜:SG 不为 0...转载 2017-12-21 18:47:53 · 632 阅读 · 0 评论 -
模板:线性代数
线性基异或线性基若要查询第k小子集异或和,则把k写成二进制,对于是1的第i位,把从低位到高位第i个不为0的数异或进答案。若要判断是否有非空子集的异或和为0,如果不存在自由基,那么说明只有空集的异或值为0,需要高斯消元来判断。struct BaseXOR{ vector&amp;amp;amp;amp;amp;amp;amp;lt;ll&amp;amp;amp;amp;amp;amp;amp;gt; a; Base原创 2018-04-17 15:22:01 · 307 阅读 · 0 评论 -
模板:高精度浮点数
高精度浮点数转自51nod,除法居然比自己写的Wint还快… 有空慢慢消化吧。#include&lt;bits/stdc++.h&gt;using namespace std;const int SIZE=264000;complex&lt;double&gt; e[SIZE],A[SIZE],w1[SIZE],w2[SIZE];void DFT(complex&lt;doubl...转载 2018-04-20 00:11:53 · 1872 阅读 · 0 评论 -
模板:组合数学
组合数学组合数取模为方便,CmnCnmC_n^m记为C(n,m)C(n,m)C(n,m)。struct Combination//底数为0~n都求出来,对p取模{ vector&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;vector&amp;amp;amp;amp;am原创 2018-05-29 19:17:40 · 640 阅读 · 0 评论 -
模板:数学分析
数学分析二分求零点、三分求极值点需要f(x)f(x)f(x)在区间[l,r][l,r][l,r]上单调/凹凸性唯一。double bs(double l,double r,double f(double x)){ if(fabs(r-l)&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;EPS||fabs(f(r)原创 2018-05-29 20:22:11 · 424 阅读 · 0 评论 -
模板:离散数学
离散数学归并排序求逆序对ll merge_sort(ll *b,ll *e)//int存答案可能会爆{ if(e-b&amp;amp;lt;2)return 0; ll i=0,j=0,*m=b+(e-b)/2,ans=merge_sort(b,m)+merge_sort(m,e); vector&amp;amp;lt;ll&amp;amp;gt; l(b,m),r(m,e); while(i&am原创 2018-05-29 21:58:16 · 289 阅读 · 0 评论 -
模板:分数类
分数类struct Fraction{ ll num,den; Fraction(ll num=0,ll den=1):num(num),den(den) {} Fraction&amp;amp;amp;amp;amp; trim() { if(den&amp;amp;amp;amp;lt;0)num=-num,den=-den; ll d=__gcd(num,den);原创 2018-07-07 21:29:18 · 605 阅读 · 0 评论 -
模板:三维计算几何
三维几何struct Coord3{ double X,Y,Z; Coord3(double X=0,double Y=0,double Z=0):X(X),Y(Y),Z(Z) {}};int sgn(double d){ return (d&amp;amp;amp;amp;amp;gt;EPS)-(d&amp;amp;amp;amp;amp;lt;-EPS);}bool operator!=(cons原创 2018-03-12 23:37:34 · 806 阅读 · 0 评论 -
模板:数据结构
数据结构以下数据结构均采用ll作为值类型,应用时根据需求调整。typedef long long ll;const ll INF=1e9;//表示正无穷,两个正无穷相加不会溢出const int NPOS=-1;//表示(下标)不存在,负数并查集struct UnionFindSet{ vector&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;am原创 2017-12-03 20:42:46 · 762 阅读 · 0 评论 -
我的算法竞赛模板
数据结构图论数论组合数学线性代数离散数学数学分析计算几何高精度C++语言相关原创 2018-03-09 22:28:40 · 1210 阅读 · 0 评论 -
模板:C++语言相关
算法库a为容器时直接传迭代器;a为数组,那么beg变成a,end变成a+m,其中m为a的大小(即传地址)。 附上algorithm库函数总表。//用排序sort、去重unique、二分查找lower_bound实现离散化sort(beg,end);int n=unique(beg,end)-beg;//离散化后元素个数,vector可直接resizeint k=lower_bo...原创 2017-12-19 18:59:03 · 387 阅读 · 0 评论 -
模板:数论
数论欧几里得算法ll gcd(ll n,ll m)//n、m的最大公约数{ return m?gcd(m,n%m):n;}ll lcm(ll n,ll m)//n、m的最小公倍数{ return n/gcd(n,m)*m;}ll gcd(ll n,ll m,ll &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;a原创 2017-12-21 19:36:30 · 755 阅读 · 0 评论 -
模板:高精度无符号整数
高精度无符号整数构造预留位宽调整,使用时根据高精度数的位数和高精度乘法的限制调节位宽。struct Wint:vector&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;int&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp原创 2017-10-04 11:01:04 · 697 阅读 · 0 评论 -
模板:二维计算几何
二维几何点和向量化为坐标Coord进行运算,使用stl中的容器complex实现(参考地址)。 复数相乘的几何意义为长度相乘,极角相加。 用直线上的一点p和方向向量v表示一条经过p的直线,直线上的所有点q满足q=p+t*v,其中t是参数;当限制t≥0时,该参数方程表示射线;限制0≤t≤1时,该参数方程表示线段。 此外,如果已知线段端点a1和a2,可以通过Line(a1,a2-a1)来得...原创 2017-12-07 00:35:15 · 459 阅读 · 0 评论 -
模板:bitset高精度
bitset高精度代替整型进行位运算,更方便并且可以处理超过最大整形范围大小的位集合。 你可以把bitset看作可以位运算的bool数组,换言之,bitset的大小是固定的。因此,用bitset做状态压缩是很方便的,也可以方便的实现集合的交并补操作。 bitset仅重载了相等不等和位运算符,原生不支持四则运算和大小比较,所以很少代替高精度数。bitset&amp;amp;amp;amp;lt;N&amp;amp;amp;amp;gt; b(unsi..原创 2018-02-05 13:44:33 · 1639 阅读 · 12 评论 -
模板:图论
图论这里用类似邻接表的方法存图。有的算法可能需要邻接矩阵,详见模板·线性代数。struct Graph{ struct Vertex { vector&amp;amp;amp;lt;int&amp;amp;amp;gt; a,b;//相关出边和入边编号 int siz,dep,top,dfn;//树链剖分中使用,依次代表子树节点数、深度、所在链的顶端节点、dfs序 }; struct Edge { int from,...原创 2017-10-29 17:45:15 · 913 阅读 · 0 评论