11 2015 档案
摘要:枚举作为magic road的边,然后求出A/B。 A/B得在大概O(1)的时间复杂度求出,关键是B,B是包含magic road的最小生成树。 这么求得: 先在原图求MST,边总和记为s,顺便求出MST上任意两点路径上的最长边d[i][j]。 当(u,v)是magic road时, 如果它在原本的
阅读全文
摘要:可以依次枚举MST上的各条边并删去再求最小生成树,如果结果和第一次求的一样,那就是最小生成树不唯一。 用prim算法,时间复杂度O(n^3)。 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 #define MAXN 1
阅读全文
摘要:我把单词当作点,然后这样其实是不对的,这样就要判定是否是哈密顿通路。。 这题应该把单词的首尾单词当作点,而单词本身就是边,那样就是判定欧拉通路了。 有向图包含欧拉通路的充要条件是:首先基图连通,然后是所有点的入度=出度 或者 有且只有一点出度=入度+1(起点)且有且只有一点入度=出度+1(终点)。
阅读全文
摘要:给一个无向图的度序列判定是否可图化,并求方案: 可图化的判定:d1+d2+……dn=0(mod 2)。关于具体图的构造,我们可以简单地把奇数度的点配对,剩下的全部搞成自环。 可简单图化的判定(Havel定理):把序列排成不增序,即d1>=d2>=……>=dn,则d可简单图化当且仅当d’={d2-1,
阅读全文
摘要:IDA*是IDS的基础上加上满足A*算法的估值函数来剪枝的搜索算法。 这题代码量挺少的,可以看出整个IDA*的框架:
阅读全文
摘要:有一种暴力是这样的,枚举一边,确定另一边。 这一题是这么解的,枚举第一行所有翻转情况,然后剩下几行其实是确定的,因为前i行翻转方式确定后只能通过第i+1行的翻转来改变第i行的状态,于是依次模拟求出剩下几行的翻转情况。 另外其实每个点最多只会被翻转一次,因为如果翻转两次和不翻转是一样的。 这题很有意思
阅读全文