摘要: Traveling Salesman ProblemSolve:暴力解法复杂度为O(N!)这个是难以承受的,可以用朴素的DP划分思想达到O(N^2*2^N)。N个节点有2^N个子集,记录集合中以v为结束点的集合个数为N*2^N个。Best Sequence预处理出每个字符串和其他串的最大匹配长度,跑一遍 TSP。code:View Code #include <iostream>#include <cstdio>#include <vector>#include <algorithm>#include <cstring>using n 阅读全文
posted @ 2012-11-29 23:24 zhang1107 阅读(373) 评论(0) 推荐(0) 编辑
摘要: Problem:给定一颗树,给每个节点都染上颜色使没有两个相邻的节点都染上颜色。Solve:每个节点记录两个最大值,1.这个节点染色的最大值B[u] 2.这个节点不然色的最大值W[u]初始叶子有B[v]=1,W[v]=0,dfs一遍对root取max(B[root],W[root])。Balancing Actdfs一遍标记以每个节点为根的子树总的节点数,tree dp 一遍得出删除每个节点的blance,O(N)扫一遍取最小。 阅读全文
posted @ 2012-11-29 22:45 zhang1107 阅读(148) 评论(0) 推荐(0) 编辑
摘要: Interval DPFrom:http://www.stanford.edu/class/cs97si/04-dynamic-programming.pdfProblem:插入最少的字母使输入的串,变成回文串。Solve:d[i][j]表示i~j最少需要添加几个字母,一个字母即d[i][i]=0。如果y[1~k]为x[i~j]最佳解,则y[2~k-1]必为x[i+1~j],x[i~j-1]和x[i+1~j-1]其中之一的最优解。// fill in base cases herefor(t = 2; t <= n; t++)for(i = 1, j = t; j <= n; i+ 阅读全文
posted @ 2012-11-29 21:50 zhang1107 阅读(211) 评论(0) 推荐(0) 编辑
摘要: UVA 105 The Skyline Problemhh数组记录每个坐标点上高度的最大值,坐标范围[0,10000],每当高度变化输出横坐标很纵坐标,时间复杂度O(10000).观察数据范围和思维的灵活度有待提高。 阅读全文
posted @ 2012-11-29 17:57 zhang1107 阅读(144) 评论(0) 推荐(0) 编辑
摘要: D. Building Bridge两点之间直线最短,相似三角形求出在A上的点,二分查找最接近这点的点,B河岸上扫一遍求出最小距离时分别对应A,B河岸上的点,复杂度O(mlogN) 阅读全文
posted @ 2012-11-29 14:49 zhang1107 阅读(163) 评论(0) 推荐(0) 编辑