Fork me on GitHub
摘要: 矩阵快速幂其实跟普通快速幂一样,只是把数换成矩阵而已。模板,两种写法,亲测可用://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 阅读(3564) 评论(0) 推荐(1) 编辑
摘要: A.方老师和缘分 http://www.cnblogs.com/whatbeg/p/3765621.htmlB.方老师和农场 http://www.cnblogs.com/whatbeg/p/3765624.htmlC.方老师炸弹 http://www.cnblogs.com/whatbeg/p/3... 阅读全文
posted @ 2014-06-15 10:39 whatbeg 阅读(360) 评论(1) 推荐(0) 编辑
摘要: 即求从起点到终点至少走K条路的最短路径。用两个变量来维护一个点的dis,u和e,u为当前点的编号,e为已经走过多少条边,w[u][e]表示到当前点,走过e条边的最短路径长度,因为是至少K条边,所以大于K条边的当做K条边来处理就好了。求最短路的三个算法都可以做,我这里用的是SPFA,比较简洁。代码:#... 阅读全文
posted @ 2014-06-15 10:37 whatbeg 阅读(334) 评论(0) 推荐(0) 编辑
摘要: 做法:如果有ab的有向边,连好所有边后,找入度为0的点作为起点,将其赋为最小的价值888,然后其所有能到的端点,价值加1,加入队列,删去上一个点,然后循环往复,直到队列为空,即每个点都赋予了一个权值为止。代码:#include #include #include #include #include ... 阅读全文
posted @ 2014-06-15 10:37 whatbeg 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 判断欧拉路径是否存在及求出字典序最小的欧拉路径问题(如果存在)。将字符串的第一个字母和最后一个字母间连边,将字母看成点,最多可能有26个点(a-z),如果有欧拉路径,还要判断是否有欧拉回路,如果有,则需要找一个字典序最小的点开始生成这条链,否则以起点开始生成链,起点即为出度比入度大1的点。欧拉路径是... 阅读全文
posted @ 2014-06-15 10:37 whatbeg 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 最小生成树变形。题目已经说得很清楚,要求到达每个房间,只需求一个最小生成树,这时边权和一定是最小的,并且那k个房间一定与所有点都有通路,即一定都可以逃脱。但是有可能当所有点都有了该去的安全房间以后,安全房间之间并不需要连边了,这样就会变成多个树,不好处理。想一想,既然不需要连边了,也就是边权不再增加... 阅读全文
posted @ 2014-06-15 10:37 whatbeg 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 二分图最大匹配的匈牙利算法模板题。由题目易知,需求二分图的最大匹配数,采取匈牙利算法,并采用邻接表来存储边,用邻接矩阵会超时,因为邻接表复杂度O(nm),而邻接矩阵最坏情况下复杂度可达O(n^3)。代码:#include #include #include #include #include #in... 阅读全文
posted @ 2014-06-15 10:37 whatbeg 阅读(493) 评论(0) 推荐(1) 编辑
摘要: 题意:求有向图的往返最短路的最长长度。分析:求第一次到所有点的距离可以用一次Dijkstra求最短路求出来。考虑回来的路,想想就知道,从每个点回来的路即为将边的方向反转再求一次最短路后的结果。所以此题为求两次最短路。代码:#include #include #include #include #in... 阅读全文
posted @ 2014-06-15 10:36 whatbeg 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 1.易知,树上两点的距离dis[u][v] = D[u]+D[v]-2*D[lca(u,v)] (D为节点到根节点的距离)2.某条边权值一旦改变,将会影响所有以v为根的子树上的节点到根节点的距离,很明显,DFS一遍后以v为根的子树在DFS序列中是连续的一段,及转化为区间更新问题,可以用树状数组。做法... 阅读全文
posted @ 2014-06-15 10:33 whatbeg 阅读(594) 评论(0) 推荐(0) 编辑
摘要: 给定一个非负整数序列{dn},若存在一个无向图使得图中各点的度与此序列一一对应,则称此序列可图化。进一步,若图为简单图,则称此序列可简单图化。此题因为是无自环无重边,所以是简单图。用判定简单图可图化的Havel-Hakimi定理。Havel-Hakimi定理:一个度序列:是简单图度序列当且仅当:是简... 阅读全文
posted @ 2014-06-15 10:33 whatbeg 阅读(329) 评论(0) 推荐(0) 编辑
摘要: Tarjan算法。1.若u为根,且度大于1,则为割点2.若u不为根,如果low[v]>=dfn[u],则u为割点(出现重边时可能导致等号,要判重边)3.若low[v]>dfn[u],则边(u,v)为桥(封死在子树内),不操作。求割点时,枚举所有与当前点u相连的点v:1.是重边: 忽略2.是树边: T... 阅读全文
posted @ 2014-06-15 10:32 whatbeg 阅读(498) 评论(0) 推荐(0) 编辑
摘要: 思路:如果出现了一个强连通分量,那么走到这个点时一定会在强连通分量里的点全部走一遍,这样才能更大。所以我们首先用Tarjan跑一遍求出所有强连通分量,然后将强连通分量缩成点(用到栈)然后就变成了一个DAG(有向无环图),然后跑一遍DFS,不断加上遍历点的权值,如果到了网吧,则更新一遍答案,因为可以出... 阅读全文
posted @ 2014-06-15 10:32 whatbeg 阅读(334) 评论(0) 推荐(0) 编辑
摘要: 这题原来以为是某种匹配问题,后来好像说是强连通的问题。做法:建图,每个方老师和它想要的缘分之间连一条有向边,然后,在给出的初始匹配中反向建边,即如果第i个方老师现在找到的是缘分u,则建边u->i。这样求出所有的强连通分量,每个强连通分量中方老师和缘分的数目一定是相等的,所以每个方老师一定可以找到与他... 阅读全文
posted @ 2014-06-15 10:31 whatbeg 阅读(412) 评论(0) 推荐(0) 编辑
摘要: 首先将原图中的连通分量缩点,一定可以将原图缩成一棵树的形式,然后统计这棵树的叶子节点个数,答案就是(leaf+1)/2。这里不再证明,可以画个图看一下。(简单说明一下,首先把两个最近公共祖先最远的两个叶节点之间连接一条边,这样可以把这两个点到祖先的路径上所有点收缩到一起,因为一个形成的环一定是双连通... 阅读全文
posted @ 2014-06-15 10:31 whatbeg 阅读(488) 评论(0) 推荐(0) 编辑
摘要: 这题其实就是一个求数组中第K大数的问题,用快速排序的思想可以解决。结果一路超时。。原来要加输入输出优化,具体优化见代码。顺便把求数组中第K大数和求数组中第K小数的求法给出来。代码:/** this code is made by whatbeg* Problem: 1099* Verdict: Ac... 阅读全文
posted @ 2014-06-15 00:24 whatbeg 阅读(607) 评论(0) 推荐(0) 编辑