摘要: http://poj.org/problem?id=2110题意:给你一个n*n矩形(n<=100),每个位置上都有一个数字代表此处山的高度,要从(1,1)走到 (n,n),要求一条路径使得这条路径上最高山和最矮山的高度差最小,输出这个最小高度差。分析:这个n很小,所以容易想到bfs撸,但n也不小,直接bfs会撸爆,于是可以二分最后的高度差下界,然后bfs判定,这样大大减少了每次bfs的遍历结点个数,节省了大量时间和空间。 阅读全文
posted @ 2014-03-09 23:23 Chellyutaha 阅读(267) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2018此乃神题……详见04年集训队论文周源的,看了这个对斜率优化dp的理解也会好些。分析: 我们要求的是{S[j]-s[i-1]}/{j-(i-1)}最大,可以发现这个形式满足直线斜率式,于是原题就可以看成平面上有一些点P(i,s[i]),然后求这些点中横距大于F的两点的最大斜率。 这么转化后仍然需要n^2的枚举 但当你枚举一个点,并在前面的点中枚举找到一个和它结合斜率最大的解时,可以发现是像凸包那样的维护一个下凹的曲线,因为如果某个点是上凸的,那么易得这个点得到的斜率必定不会比前一个点大!这也就是说我们在从F..n枚举区间的最右端点... 阅读全文
posted @ 2014-03-09 23:02 Chellyutaha 阅读(246) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2138题意:给你一些单词和初始单词,在初始单词的任意位置你可以加任意一个字母,使得这个新单词在给的单词中有所出现,然后在这样不断迭代下去,让你求出最远能到达的单词。分析:长度为len的单词只能由长度为len-1的单词得到,故可以把每个单词看成一个节点,处理节点之间是否连边,鉴于n很小,可以朴素的O(n)扫描。然后就是跑一边最长路。又因为是DAG图,所以dp是可以且更优的 阅读全文
posted @ 2014-03-09 22:04 Chellyutaha 阅读(269) 评论(0) 推荐(0) 编辑