
acm学习记录
文章平均质量分 58
模板和学习笔记
addmission
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Splay模板及部分理解
Splay模板及部分理解 理解 Splay树在所有的操作中,其实都没有对于val进行比较,它维护的是一个序列的中序遍历,这满足一个的左根右的顺序,那么只要我们在插入时以左根右顺序找位置插入,那么最后的结果就是,中序遍历是一个从小到大的过程,即也维护了左小右大。(个人理解,不知正确与否) 代码模板 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> usin原创 2022-02-24 15:26:19 · 669 阅读 · 0 评论 -
博弈论
博弈论博弈论巴什博弈(Bash Game)尼姆博弈(Nimm Game)nimk游戏anti-nim求连续数字的异或和威佐夫博奕(Wythoff Game)EX:扩展威佐夫博弈SG函数和SG定理 博弈论 巴什博弈(Bash Game) 有一堆n个物品,两个人从轮流中取出(1~m)个;最后取光者胜。 考虑到 若n=m+1 那么 第一个人不论如何取都不能取胜。 进一步我们发现 若 n=k*(m+1)+r; 先取者拿走 r 个,那么后者再拿(1~m)个 n=(k-1)*(m+1)+s; 先取者再拿走s 个 最后总原创 2021-02-18 15:57:32 · 213 阅读 · 0 评论 -
网络流
网络流网络流最大流最小割Ford-Fulkerson算法Edmond-Karp算法Dinic算法ISAP最小费用最大流 网络流 最大流最小割 Ford-Fulkerson算法 用dfs实现的FF算法时间复杂度上界是 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EJtlDHgC-1613446676440)(https://www.zhihu.com/equation?tex=O%28mf%29)] ,其中 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传原创 2021-02-16 11:38:27 · 271 阅读 · 0 评论 -
数论(loading)
数论数论欧拉定理、费马小定理欧拉函数得出威尔逊定理卢卡斯定理及其扩展欧几里得定理及其扩展欧几里得定理欧几里得扩展线性同余方程中国剩余定理mi互质时mi不互质时乘法逆元二次同余方程素数反素数欧拉筛素性测试 数论 欧拉定理、费马小定理 欧拉函数(小于或等于n的正整数中与n互质的数的数目):φ(x)=x∏i=1n1−1pi(其中p1,p2...pn为x的所有质因数,x为不为0的整数)定义φ(1)=1\varphi(x)=x \prod_{i=1}^n{1- {1\over {p_i}}}(其中p_1,p_2...原创 2021-02-04 17:38:04 · 400 阅读 · 0 评论 -
计算几何(基础部分)
计算几何(基础部分)计算几何注意点与向量模板点与线直线定义线段与射线点与线模板多边形三角形三角形面积三角形四心普通多边形(通常按照逆时针储存所有顶点)判断点在凸多边形内Pick定理普通多边形模板圆圆模板 计算几何 注意 输出时一定要小心不要输出 − 0 -0−0,比如 double a = -0.000001; printf("%.4f", a); 使用反三角函数时,要注意定义域的范围,比如,经过计算 x = 1.000001 double x = 1.000001; double acx = a原创 2021-02-04 17:36:39 · 278 阅读 · 0 评论 -
生成树
最小生成树最小生成树Kruskal算法(稀疏图)Prim算法(稠密图) 最小生成树 Kruskal算法(稀疏图) 利用并查集,从小到大寻边,构成最小生成树。 模板: struct Edge { int u, v, w; Edge() {}; Edge(int u, int v, int w) :u(u), v(v), w(w) {}; bool operator <(const Edge& x)const { return w < x.w; } }; vector&l原创 2021-01-26 15:58:03 · 153 阅读 · 0 评论 -
memset各种类型
转载来自:https://blog.youkuaiyun.com/Vmurder/article/details/46537613 memset各种类型 int ”较“的原则:加法不爆。 极大值:0x7f 较大值:0x3f 较小值:0xc0 极小值:0x80 long long ”较“的原则:加法不爆。 极大值:0x7f 较大值:0x3f 较小值:0xc0 极小值:0x80 float ”较“的原则:保证一定位精度。 7f以上一直到be都是-0 (实际上是一个很小的>-1.0的负数) 极大值:0x7f 较大值:0转载 2021-01-26 15:47:24 · 203 阅读 · 0 评论 -
并查集
并查集)并查集普通并查集基本操作①初始化②查询操作③集合合并优化①路径压缩②按秩合并(可以保留树的结构)带权并查集查询操作集合合并 并查集 普通并查集 基本操作 ①初始化 void init(){ for(int i=1;i<=50000;i++) fa[i]=i; } ②查询操作 int Find(int x){ return fa[x]==x?x:Find(f[x]); } ③集合合并 void merge(int x,int y){ int fx=Find(原创 2021-01-26 11:13:37 · 211 阅读 · 0 评论 -
shift-and,shift-or算法
shift-and,shift-or算法shift-and,shift-or算法shift-and算法shift-or算法 shift-and,shift-or算法 维护一个字符串的集合,集合中的每个字符串既是模式串P的前缀,同时也是已读入文本的后缀。每读入一个新的文本字符,该算法即用位并行的方法更新集合。该集合用一个位掩码D=dm…d1来表示。 shift-and算法 p为模式串(长度为m),t为文本串。 D的第j位被置为1当且仅当p0…pj是t0…tj的后缀。当dm为1时,就表示有一个成功的匹配。原创 2021-01-24 23:43:56 · 1127 阅读 · 0 评论 -
差分约束
差分约束 假设有这样的三个条件: 那么我们可以将不等式1和不等式2相加得到: 那么如果想要得到x1和x3的最大差值,那么其实就是取min(k1+k2,k3); 其实问题我们可以将问题转化成图论,将x1,x2,x3看成三个点x1,x2,x3,对应三条边的建立就根据三个不等式来建立,那么边权值如何取呢?显然我们想要最大差值,我们就需要取最大值,那么图可以建立成这样: 那么我们上述过程将不等式1和不等式2相加,然后和不等式3比较值的过程,其实就是最短路计算过程中的判断能否松弛的过程。 那么我们就可以根据不等原创 2021-01-24 22:06:41 · 430 阅读 · 0 评论 -
各种路的整合
各种路的整合最短路单源最短路1.Dijkstra(前向星+优先队列)2.SPFA(负权边)多源最短路Floyed最长路SPFA(权值相反数建图)拓扑排序(有向无环图)次短路k短路 最短路 单源最短路 1.Dijkstra(前向星+优先队列) #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<cmath> #include<algorithm> #include<cstdio> #includ原创 2021-01-24 22:05:53 · 142 阅读 · 0 评论 -
康拓展开
康托展开康拓展开定义例子:52413**通过康托逆展开生成全排列** 康拓展开 定义 康托展开公式:X=An*(n-1)!+An-1*(n-2)!+…+Ai*(i-1)!+…+A2*1!+A1*0! 其中Ai表示其在未出现的元素中排在第几位(从0开始)。 例子:52413 1、首先看第一个数 5,不管第一位是什么数,后面都有四位数,那么这四位数全排列的方式有 4!种,而如果第一位是 1 或 2 或 3 或 4 都会比5开头的字典序要小,所以可以令1,2,3,4分别作为开头,这样的话就会有 4 * 4!种排法原创 2021-01-24 22:04:05 · 274 阅读 · 0 评论 -
N数码解的存在问题
N数码解的存在问题N数码解的存在问题 N数码解的存在问题 >推广二维N×N的棋盘 N×N的棋盘,N为奇数时,与八数码问题相同。 N为偶数时,空格每上下移动一次,奇偶性改变。称空格位置所在的行到目标空格所在的行步数为空格的距离(不计左右距离),若两个状态的可相互到达,则有,两个状态的逆序奇偶性相同且空格距离为偶数,或者,逆序奇偶性不同且空格距离为奇数数。否则不能。 也就是说,当此表达式成立时,两个状态可相互到达:(状态1奇偶性==状态2奇偶性)==(空格距离%2==0)。 >推广到三维N×N×N原创 2021-01-24 22:02:10 · 229 阅读 · 1 评论 -
A*算法和IDA*算法
A*算法和IDA*算法A*算法和IDA*算法A*算法要点步骤IDA*算法基本思路 A算法和IDA算法 A*算法 要点 计算出组成路径的方格的关键是下面这个等式: F = G + H 这里, G = 从起点 A 移动到指定方格的移动代价,沿着到达该方格而生成的路径。 H = 从指定的方格移动到终点 B 的估算成本。( H值可以通过估算起点于终点 ( 红色方格 ) 的 Manhattan 距离得到,仅作横向和纵向移动,并且忽略沿途的墙壁。(仅作为一种估测方法)) 我们以d(n)表达状态n到目标状态的距离,那么h原创 2021-01-24 22:00:23 · 558 阅读 · 0 评论