Fork me on GitHub

随笔分类 -  【算法学习笔记】

摘要:为了补这题,特意学了下模拟退火算法,感觉算法本身不是很难,就是可能降温系数,步长等参数不好设置。具体学习可以参见:http://www.cnblogs.com/heaad/archive/2010/12/20/1911614.html 我认为讲的很不错,通俗易懂。这题设置一个step为1,降温系数为... 阅读全文
posted @ 2014-09-16 18:51 whatbeg 阅读(740) 评论(0) 推荐(0)
摘要:题意:给n个矩形,求矩形周长并解法:跟求矩形面积并差不多,不过线段树节点记录的为:len: 此区间线段长度cover: 此区间是否被整个覆盖lmark,rmark: 此区间左右端点是否被覆盖num: 此区间分离开的线段的条数重点在转移的地方,不难理解。代码:#include #include #in... 阅读全文
posted @ 2014-08-28 11:13 whatbeg 阅读(266) 评论(0) 推荐(0)
摘要:题意:给出n个矩形,求矩形中被覆盖K次以上的面积的和。解法:整体与求矩形面积并差不多,不过在更新pushup改变len的时候,要有一层循环,来更新tree[rt].len[i],其中tree[rt].len[i]表示覆盖次数大于等于i的线段长度,以便求面积,最后只要每次都用tree[1].len[K... 阅读全文
posted @ 2014-08-28 10:25 whatbeg 阅读(241) 评论(0) 推荐(0)
摘要:题意:给出矩形两对角点坐标,求矩形面积并。解法:线段树+离散化。每加入一个矩形,将两个y值加入yy数组以待离散化,将左边界cover值置为1,右边界置为2,离散后建立的线段树其实是以y值建的树,线段树维护两个值:cover和len,cover表示该线段区间目前被覆盖的线段数目,len表示当前已覆盖的... 阅读全文
posted @ 2014-08-25 15:42 whatbeg 阅读(390) 评论(0) 推荐(0)
摘要:什么是离散化? ----Matrix67如果说今年这时候OIBH问得最多的问题是二分图,那么去年这时候问得最多的算是离散化了。对于“什么是离散化”,搜索帖子你会发现有各种说法,比如“排序后处理”、“对坐标的近似处理”等等。哪个是对的呢?哪个都对。关键在于,这需要一些例子和不少的讲解才能完... 阅读全文
posted @ 2014-07-24 19:58 whatbeg 阅读(514) 评论(0) 推荐(0)
摘要:Manacher算法首先:大家都知道什么叫回文串吧,这个算法要解决的就是一个字符串中最长的回文子串有多长。这个算法可以在O(n)的时间复杂度内既线性时间复杂度的情况下,求出以每个字符为中心的最长回文有多长, 这个算法有一个很巧妙的地方,它把奇数的回文串和偶数的回文串统一起来考虑了。这一点一直是在做... 阅读全文
posted @ 2014-07-21 23:29 whatbeg 阅读(504) 评论(0) 推荐(0)
摘要:1.要求系数矩阵可逆2.A为增广矩阵,即A[i][n]为第i个方程右边的bi3.运行结束后A[i][n]即为第i个未知数的值typedef double Matrix[N][N];void gauss_elimination(Matrix A,int n){ int i,j,k,r; f... 阅读全文
posted @ 2014-07-21 11:46 whatbeg 阅读(226) 评论(0) 推荐(0)
摘要:Stoer-Wagner算法基本思想:如果能求出图中某两个顶点之间的最小割,更新答案后合并这两个顶点继续求最小割,到最后就得到答案。算法步骤:-------------------------------------------------------------------------------... 阅读全文
posted @ 2014-07-20 16:33 whatbeg 阅读(715) 评论(0) 推荐(0)
摘要://求因子个数 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); ... 阅读全文
posted @ 2014-07-04 23:27 whatbeg 阅读(559) 评论(0) 推荐(0)
摘要:ll random(ll n) { return (ll)((double)rand()/RAND_MAX*n + 0.5); } ll pow_mod(ll a,ll p,ll n) { if(p == 0) return 1; ll ans = pow_mod(a,p/2,n); ans = ans*ans%n; if(p%2) ... 阅读全文
posted @ 2014-06-30 21:45 whatbeg 阅读(313) 评论(0) 推荐(0)
摘要://函数计算欧拉函数 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+... 阅读全文
posted @ 2014-06-28 21:45 whatbeg 阅读(602) 评论(0) 推荐(0)
摘要: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; } //计算模... 阅读全文
posted @ 2014-06-28 21:39 whatbeg 阅读(500) 评论(0) 推荐(0)
摘要: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个方... 阅读全文
posted @ 2014-06-28 21:30 whatbeg 阅读(472) 评论(0) 推荐(0)
摘要:1.扩展欧几里得算法 2.快速幂法 阅读全文
posted @ 2014-06-28 21:24 whatbeg 阅读(265) 评论(0) 推荐(0)
摘要:一些递推关系如f(n) = af(n-1)+bf(n-2)+...+tf(n-k)等,在n很大的时候,O(n)的算法都不能满足要求的时候,往往可以化为矩阵快速幂来做,复杂度可以降为O(logn),大大减少了运行时间。 如何将一个递推关系式化为矩阵呢? 比如这样一个递推关系: f(n) = 2*f(n 阅读全文
posted @ 2014-06-16 10:12 whatbeg 阅读(513) 评论(0) 推荐(0)
摘要:矩阵快速幂其实跟普通快速幂一样,只是把数换成矩阵而已。模板,两种写法,亲测可用://made by whatbeg//2014.6.15struct Matrix{ int m[3][3];};Matrix Mul(Matrix a,Matrix b){ Matrix c; mem... 阅读全文
posted @ 2014-06-15 23:45 whatbeg 阅读(3640) 评论(0) 推荐(1)
摘要:算法思想:如果存在最小环,会在编号最大的点u更新最短路径前找到这个环,发现的方法是,更新最短路径前,遍历i,j点对,一定会发现某对i到j的最短路径长度dis[i][j]+mp[j][u]+mp[u][i] != INF,这时i,j是图中挨着u的两个点,因为在之前最短路更新过程中,u没有参与更新,所以... 阅读全文
posted @ 2014-06-11 20:10 whatbeg 阅读(1314) 评论(0) 推荐(0)
摘要:算法思想:如果没有负权回路,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) ... 阅读全文
posted @ 2014-06-10 22:58 whatbeg 阅读(754) 评论(0) 推荐(0)
摘要:1.基本概念对图G=,最小支配集:从V中取尽量少的点组成一个集合,使得V中剩余的点都与取出来的点有边相连最小点覆盖:从V中取尽量少的点组成一个集合,使得E中所有边都与取出来的点相连最大独立集:从V中取尽量多的点组成一个集合,使得这些点之间没有边相连2.贪心法求树的最小支配集,最小点覆盖,最大独立集模... 阅读全文
posted @ 2014-06-08 19:09 whatbeg 阅读(2855) 评论(1) 推荐(1)
摘要:一、基本概念:1.割点:若删掉某点后,原连通图分裂为多个子图,则称该点为割点。2.割点集合:在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。3.点连通度:最小割点集合中的顶点数。4.割边(桥):删掉它之后,图... 阅读全文
posted @ 2014-06-08 17:00 whatbeg 阅读(976) 评论(0) 推荐(2)