HDU 4008【树型DP+树儿子兄弟判断】
摘要:题目:Parent and son题意:输入N,Q,接着输入N-1条边,组成树,结点以1-N命名。然后输入Q个提问,每个提问输入X,Y(X!=Y),表示当以X为树的根结点时,求Y的最小儿子和最小子孙。解题思路:以1为根,进行DFS遍历,DP每个结点的最小儿子和最小子孙,注意最小儿子要包括其father,方便后面处理。有了这些信息后,对每个提问X,Y。分三种情况:s第一种情况:当Y==1时,X肯定是Y的儿子。这个要特殊处理,因为上面获得信息不能取得其最优解。因为DFS结果的最小子孙sx有可能跟x在同一棵子树上,那么当以X为树根时,Y的最小子孙肯定不是sx。所以结点1要预先处理。找出其最小的子孙s
阅读全文
posted @
2011-09-15 16:53
Kenfly
阅读(772)
推荐(1)
HDU 4001【DAG图的最长路径】
摘要:题目:To Miss Our Children Time题意:给出n个长方体,其长宽高分别为ai,bi,ci,di, di为长方体的类型。di为0的长方体,当其长宽分别大于或等于某个长方体时,可以摆放在某个长方体上面。di为1的长方体,当其长宽分别大于或等于且其底面积大于某个长方体时,可以摆放在某个长方体上面。di为2的长方体,当其长宽分别大于某个长方体时,可以摆放在某个长方体上面。求通过这些长方体可以摆出的最高塔的高度。解题思路:这题是经典的求DAG图上的最长路径题目。用边表示一个长方体可摆放在另一个长方体这种关系,给所有可能组合的两个长方体造边,则会得到DAG图,这题有个特别小心的地方是当
阅读全文
posted @
2011-09-09 12:42
Kenfly
阅读(1349)
推荐(0)
HDU 1385【两点间最短路, DIJK + 记录路径】
摘要:题目: http://acm.hdu.edu.cn/showproblem.php?pid=1385解题思路: 对每一个询问, 跑一次dijkstra算法, 麻烦的是题目要求输出路径, 有多组解时还要是字典序最小的那条. 代码复杂了点, 但思路很简单, 用一个全局变题Path[]来记录父结点就可以了, 即前一个结点, 如 : Path[i] 表示 当前点 i 是由 Path[i] 得来的. DIJK跑完后, 可以从终点向前一直寻找前一个结点, 直到遇到始点, 可以得到一条完整的路径. 当有多组解时, 在松驰时候要加多一个判定条件, 判断当前得出的路径的字典序是否小于以前的就可以了.#inc..
阅读全文
posted @
2011-04-07 16:23
Kenfly
阅读(903)
推荐(0)
HDU 1530 最大团问题
摘要:基本上没有用上什么优化, 只是简单地搜索代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 #include <iostream> 2 #include <cstdio> 3 #include <string> 4 #include <cstring> 5 #include <algorithm> 6 #include <vector> 7 #include <
阅读全文
posted @
2010-11-08 17:24
Kenfly
阅读(761)
推荐(0)
HDU 1083
摘要:HDU 1083 http://acm.hdu.edu.cn/showproblem.php?pid=1083PKU 1469 http://poj.org/problem?id=1469【二分匹配】网络流版本:HDU 1083Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 //只要求出course的最大匹配数,再跟P比较即可.网络流实现 2 #include <iostream> 3 #include <cstdio
阅读全文
posted @
2010-11-03 15:50
Kenfly
阅读(624)
推荐(0)