Test 2012-8-12
help
    第一题70分算法很容易,想得满分的话在三角形的处理上比较麻烦,需要用到叉积。
game
    第二题用的线段树加贪心。一定程度上受到数据范围的影响,没有想到单调栈的O(N)算法。
hamilton
    第三题考场上只写了50分的DFS,标准算法为状压DP。(n<=20是状压的明显标志。)首先枚举起点,用f[t,m]表示当前找到的链的终点为t,各点出现的状态为m时,包括这条链的有多少个环。f[t,m]=Σf[i,m+1 shl (i-1)],或当i为起点且环的长度大于等于3时将f[t,m]加一。由于一个环可能被找多次,所以枚举下一个起点时将前面的起点删掉即可。即使这样,一个环还是会被正反各找一次,所以要将最后答案除以二。
    图数据的做法:第一种是先随机出一棵树,再随机地往树上添边。第二种随机出一个邻接矩阵,再根据矩阵输出各边。


POJ1201、POJ1716
    两道差分约束系统的题目。差分约束系统,简单来说就是把数之间的不等关系转化为点之间边的关系,再通过最短路进行求解。一般方法是如果有xi-xj<=k(注意符号是<=),则从xj向xi连一条边,边权是k。再增加一个0号点,向每一个点连一条边权为0的边(这样做一是避免有些点搜不到,二是有解的话全为0这样一组可行解)。如果存在无解情况,则需在SPFA中加一个times[]判断每个点入队次数,次数大于n则说明存在负权环,无解。

posted on 2012-08-13 06:42  Minty  阅读(165)  评论(0)    收藏  举报