随笔分类 - 【模板们 Templates】
摘要:1.数字转stringint x;string id;stringstream ss;ss > id;2.字符串转数字int num;string s;stringstream ss(s);ss>>num;char str[];sscanf( str, "%d", &num ); /...
阅读全文
摘要:Stoer-Wagner算法基本思想:如果能求出图中某两个顶点之间的最小割,更新答案后合并这两个顶点继续求最小割,到最后就得到答案。算法步骤:-------------------------------------------------------------------------------...
阅读全文
摘要://求因子个数 int Facnt(int n) { int res = 1; for(int i=2;i*i 1) res = 2*res; return res; } //求因子和 int Facsum(int n) { int res = 1; for(int i=2;i*i 1) res *= (n+1); ...
阅读全文
摘要://函数计算欧拉函数 int ola_phi(int n) { int m = (int)sqrt(n+0.5); int ans = n; for(int i=2;i 1) ans = ans/n*(n-1); } //筛出欧拉函数表 int phi[N]; void phi_table(int n) { for(int i=2;i<=n;i+...
阅读全文
摘要:ll exgcd(ll a,ll b,ll &x,ll &y) { if(!b) { x = (ll)1,y = (ll)0; return a; } ll r = exgcd(b,a%b,x,y); ll t = x; x = y; y = t - a/b*y; return r; } //计算模...
阅读全文
摘要:ll exgcd(ll a,ll b,ll &x,ll &y) { if(!b) { x = (ll)1,y = (ll)0; return a; } ll r = exgcd(b,a%b,x,y); ll t = x; x = y; y = t - a/b*y; return r; } //n个方...
阅读全文
摘要:矩阵快速幂其实跟普通快速幂一样,只是把数换成矩阵而已。模板,两种写法,亲测可用://made by whatbeg//2014.6.15struct Matrix{ int m[3][3];};Matrix Mul(Matrix a,Matrix b){ Matrix c; mem...
阅读全文
摘要:算法思想:如果存在最小环,会在编号最大的点u更新最短路径前找到这个环,发现的方法是,更新最短路径前,遍历i,j点对,一定会发现某对i到j的最短路径长度dis[i][j]+mp[j][u]+mp[u][i] != INF,这时i,j是图中挨着u的两个点,因为在之前最短路更新过程中,u没有参与更新,所以...
阅读全文
摘要:算法思想:如果没有负权回路,dis数组应该会在n-1次松弛之后结束。算法复杂度:O(n*m)。比Dijkstra算法复杂度要高。代码:bool Bellman_Ford(int s){ int i,j,k; for(i=0;i dis[j] + G[k].w) ...
阅读全文
摘要:1.基本概念对图G=,最小支配集:从V中取尽量少的点组成一个集合,使得V中剩余的点都与取出来的点有边相连最小点覆盖:从V中取尽量少的点组成一个集合,使得E中所有边都与取出来的点相连最大独立集:从V中取尽量多的点组成一个集合,使得这些点之间没有边相连2.贪心法求树的最小支配集,最小点覆盖,最大独立集模...
阅读全文
摘要:一、“换边”算法用Kruskal求最小生成树,标记用过的边。求次小生成树时,依次枚举用过的边,将其去除后再求最小生成树,得出所有情况下的最小的生成树就是次小的生成树。可以证明:最小生成树与次小生成树之间仅有一条边不同。这样相当于运行m次Kruskal算法。复杂度O(m^2)示例代码:int Krus...
阅读全文
摘要:图G是欧拉图,即存在欧拉回路的条件::smile:1.图是联通的2.对于无向图,奇度数点个数为0。对于有向图,每个顶点出度等于入度。欧拉回路算法模板(链式前向星和DFS实现):int ans[N];int k = 0;int vis[2*M];void DFS(int now){ for(in...
阅读全文
摘要:定理1:在一个具有n个顶点的无向连通图G中,如果任意两个顶点的度数之和大于n,则G具有Hamilton回路。此条件为充分条件定理2:设图G = ,是Hamilton图,则对于v的任意一个非空子集S,若以|S|表示S中元素数目,G-S表示G中删除了S中的点以及与这些点关联的边后得到的子图,则满足G-S...
阅读全文
摘要:1.邻接表(vector向量法)vector G[N];int Search_Path(int s){ for(int i=0;i#include #include #include #include using namespace std;#define N 1007int path[N][...
阅读全文
摘要:一直想用诸如node k = node(args1,args2...argsN)的方式来初始化一个结构体,可以简化很大一部分代码,开始不知道怎么写,后来问人家,总结出一套代码如下:struct Point{ int x,y; Point(int _x_,int _y_) { ...
阅读全文


浙公网安备 33010602011771号