最小生成树模板

struct edge{ int u,v,cost; }es[maxn_e]; bool cmp(const edge &a,const edge &b){ return a.cost<b.cost; } in...

2018-07-26 13:12:16

阅读数 25

评论数 0

数独问题&模板

/* DLX解决9*9的数独问题,转化为729*324的精确覆盖问题 行: 一共9 * 9 * 9 == 729行。一共9 * 9小格,每一格有9种可能性(1 - 9),每一种可能都对应着一行。 列: 一共(9 + 9 + 9) * 9 + 81 == 324 种前面三个9分别代表着9...

2018-07-16 19:05:08

阅读数 176

评论数 0

最大流模板poj3281

#include <iostream> #include <stdio.h> #include <string.h> #include <alg...

2018-07-13 14:06:47

阅读数 29

评论数 0

二分模板

//left-right组成的空间内是不符合要求的范围 int binary(){ int left=1,right=pos[n-1]-pos[0]; int mid; while(right>left){ mid=(right+l...

2018-07-07 11:12:01

阅读数 52

评论数 0

卡特兰数

卡特兰数 排列组合不重复的个数 这次碰到是括号合法匹配的问题 An=C(2n,n)/(n+1); #define LL long long LL factorial(LL number) { if(number<=1) return 1...

2018-06-13 15:58:23

阅读数 31

评论数 0

巧算星期几(蔡勒公式)

蔡勒公式 W=[C/4]-2C+y+[y/4]+[26(m+1)/10]+d-1 (其中[ ]为取整符号) 其中,W是所求日期的星期数.如果求得的数大于7,可以减去7的倍数,直到余数小于7为止.c是公元年份的前两位数字,y是已知公元年份的后两位数字;m是月数,d是日数.方括[ ]表示...

2018-06-03 19:47:24

阅读数 1110

评论数 0

博弈(尼姆,威佐夫、巴什)

巴什博弈 一堆n个物品,两个人轮流从这堆物品中取物, 规定每次至少取一个,最多取m个。最后取光者得胜。 先手必胜为1 有两种情况: n<=m 先手一次取完 必胜1 n>m 先手一次取不完 剩余 <= m 对方...

2018-05-20 11:21:19

阅读数 53

评论数 0

计算几何之凸包

凸包:每个角<180°的多边形 问题: 给定n个点的坐标,求能覆盖n个点的最小多边形 Graham-scan 算法: 极角排序 初始: 1. 找到一个起始点O, 取y坐标最小的点,即图最下方的点 2. 以O为准值,极角排序 3. 我们可以...

2018-04-27 15:29:19

阅读数 23

评论数 0

徘徊在WA和tel的模拟退火

模拟退火 模拟降温的过程:温度越高时温度下降越多,温度越低(稳定)时,温度下降越少 首先由爬山算法开始 爬山算法:即完完全全的贪心算法,只找到眼前的山峰最高值。 但从c点开始时,我们发现找到的A点不是全局最优解,这也是贪心的缺点。 模拟退火是在爬山算法上做的改进: 其核心是:即...

2018-04-23 20:27:52

阅读数 42

评论数 0

最短哈密顿回路(旅行商问题)

哈密顿回路:不重复地经过每个点,并最终能回到起始点的回路 有别于欧拉回路:不重复经过每条边的回路 哈密顿回路是点遍历 旅行商问题:求一条经过图中所有点且边权和最小的回路。 以下解法: 模拟退火 状压dp dfs ...

2018-04-20 13:49:13

阅读数 2497

评论数 0

中国剩余定理(互质与不互质)

其实,不管互质还是不互质都是求解线性同余式: 中国剩余定理(互质)是求解线性同余式的一种特殊形式; 两种情况都是把多个方程组转成一个方程求解。 中国剩余定理模板(互质): void exgcd(ll a,ll b,ll &d,ll &x,...

2018-04-19 20:25:01

阅读数 70

评论数 0

回文子串

//manacher算法 /*获得字符串最长回文串(长度,位置)*/ #define Maxn 1000 struct Manacher{ string str;//输入的字符串 int RL[Maxn];//回文半径数组(表示以第i个字符为对称轴的最长回文串的回文半径) int MaxRight...

2018-04-14 16:28:20

阅读数 49

评论数 0

线段树模板

struct node{ int l,r; ll sum,lazy; }tree[maxn * 4]; // 开四倍大小 void push_up(int root){ tree[root].sum = tree[root << 1]....

2018-04-14 16:11:43

阅读数 19

评论数 0

大数模板

#include<iostream> #include<string> #include<iomanip> #include<algori...

2018-04-14 15:45:32

阅读数 22

评论数 0

并查集

并查集用来管理 相互关联的元素的分组情况,但只能进行合并,不能分割: 查询a,b是否在同一组 合并a,b所在的组 int father[maxn];//记录父亲节点 int rank[maxn];//数的高度 初始为0 void init(){ for(int i=0;i&...

2018-04-14 14:11:51

阅读数 20

评论数 0

割点与桥与缩点(tarjan)

割点:若删除该点,图不连通,则该点为割点 桥:若删除该边,图不连通,则该边为桥 如何求割点: Tarjan算法,一次dfs遍历: 对每个点,记录dfs序为dfn[],low值为low[](low初始值与dfn相同) 回溯时,如果回溯点的low值小于当前点low值,更新当前点low值 ...

2018-04-12 22:11:31

阅读数 482

评论数 0

欧几里得算法及其扩展

欧几里得算法 求最大公约数GCD: 辗转相除引理: 设数a,b(a>b),可得: gcd(a,b)=gcd(b,a%b) 证明: 设 c=gcd(a,b) 可得 a=xc, b=yc (x,y互质) 又a%b=a-(a/b)*b 其中设q=a/b,...

2018-04-11 14:15:08

阅读数 57

评论数 0

区间最值查询(RMQ)

ST算法 预处理第i位起连续2^k个数的最大值,快速查询。 说明:定义数组dp[i][j]表示 从第i位起连续2^j个数 的最大值。 (区间内有2^j个数) 例子: 2 5 9 6 3 1 dp[1][2] 第1位起连续2^2(4)个: {2,3,9,6} 预处理: dp[i]...

2018-03-22 20:33:41

阅读数 240

评论数 0

计算几何之判断线段相交

两条线段可以看作是两个向量; 一条线段跨立另一条线段的条件是:一条线段的端点分别到另一条线段两个端点构成的向量在该线段两侧;(可能不相交) 而两条线段互相跨立,即相交,就可判断。 模板分享 #include <iostream> #inclu...

2018-03-19 11:15:40

阅读数 46

评论数 0

A* 算法解决最短路径问题

常规的寻找最短路径的算法有bfs\迪杰斯特拉算法; 但是搜索范围过大,比较费时; 也可以用最短的贪心算法来计算,但是在两点之间有障碍物的情况下,贪心求得的路径并不是最短路径(会走到障碍物再被弹回)。 所有我们 通过把 贪心+ bfs =A* 结合进行求最短路。 思想: 我们需要两个数...

2018-03-17 18:02:15

阅读数 1216

评论数 0

提示
确定要删除当前文章?
取消 删除