这题原来以为是某种匹配问题,后来好像说是强连通的问题。做法:建图,每个方老师和它想要的缘分之间连一条有向边,然后,在给出的初始匹配中反向建边,即如果第i个方老师现在找到的是缘分u,则建边u->i。这样求出所有的强连通分量,每个强连通分量中方老师和缘分的数目一定是相等的,所以每个方老师一定可以找到与他...
分类:
其他好文 时间:
2014-06-15 12:10:42
阅读次数:
198
即求从起点到终点至少走K条路的最短路径。用两个变量来维护一个点的dis,u和e,u为当前点的编号,e为已经走过多少条边,w[u][e]表示到当前点,走过e条边的最短路径长度,因为是至少K条边,所以大于K条边的当做K条边来处理就好了。求最短路的三个算法都可以做,我这里用的是SPFA,比较简洁。代码:#...
分类:
其他好文 时间:
2014-06-15 12:09:25
阅读次数:
248
给定一个非负整数序列{dn},若存在一个无向图使得图中各点的度与此序列一一对应,则称此序列可图化。进一步,若图为简单图,则称此序列可简单图化。此题因为是无自环无重边,所以是简单图。用判定简单图可图化的Havel-Hakimi定理。Havel-Hakimi定理:一个度序列:是简单图度序列当且仅当:是简...
分类:
其他好文 时间:
2014-06-15 11:54:25
阅读次数:
221
二分图最大匹配的匈牙利算法模板题。由题目易知,需求二分图的最大匹配数,采取匈牙利算法,并采用邻接表来存储边,用邻接矩阵会超时,因为邻接表复杂度O(nm),而邻接矩阵最坏情况下复杂度可达O(n^3)。代码:#include #include #include #include #include #in...
分类:
其他好文 时间:
2014-06-15 11:53:19
阅读次数:
207
判断欧拉路径是否存在及求出字典序最小的欧拉路径问题(如果存在)。将字符串的第一个字母和最后一个字母间连边,将字母看成点,最多可能有26个点(a-z),如果有欧拉路径,还要判断是否有欧拉回路,如果有,则需要找一个字典序最小的点开始生成这条链,否则以起点开始生成链,起点即为出度比入度大1的点。欧拉路径是...
分类:
其他好文 时间:
2014-06-15 11:51:18
阅读次数:
188
Tarjan算法。1.若u为根,且度大于1,则为割点2.若u不为根,如果low[v]>=dfn[u],则u为割点(出现重边时可能导致等号,要判重边)3.若low[v]>dfn[u],则边(u,v)为桥(封死在子树内),不操作。求割点时,枚举所有与当前点u相连的点v:1.是重边: 忽略2.是树边: T...
分类:
其他好文 时间:
2014-06-15 11:46:09
阅读次数:
165
题意:求有向图的往返最短路的最长长度。分析:求第一次到所有点的距离可以用一次Dijkstra求最短路求出来。考虑回来的路,想想就知道,从每个点回来的路即为将边的方向反转再求一次最短路后的结果。所以此题为求两次最短路。代码:#include #include #include #include #in...
分类:
其他好文 时间:
2014-06-15 11:44:06
阅读次数:
146
1.易知,树上两点的距离dis[u][v] = D[u]+D[v]-2*D[lca(u,v)] (D为节点到根节点的距离)2.某条边权值一旦改变,将会影响所有以v为根的子树上的节点到根节点的距离,很明显,DFS一遍后以v为根的子树在DFS序列中是连续的一段,及转化为区间更新问题,可以用树状数组。做法...
分类:
其他好文 时间:
2014-06-15 11:42:02
阅读次数:
213
设FA为A的牌中数字异或和,FB为B的。则有性质:ans =
(所有的(A&B=0)个数 +
(FA=FB且A&B=0)的个数)/2。即所有的FA>FB的个数(除2是因为这里FA>FB的个数等于FA#include #include
#include #include using namespace...
分类:
其他好文 时间:
2014-06-02 20:01:12
阅读次数:
195
题意:即求给定n个数字(a1,a2,……an),不改变序列,分成M份,使每一份和的乘积最大。思路:dp[i][j]表示把前i个数字,分成j份所能得到的最大乘积。转移方程:dp[i][j]
= max{ dp[k][i-1]*sum(k+1,j) } 其中显然j#include #include #i...
分类:
其他好文 时间:
2014-06-02 19:58:45
阅读次数:
242