![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
HDOJ
小猫dd
这个作者很懒,什么都没留下…
展开
-
并查集 poj1308 hd1272
poj1308 题目链接题目大意:输入若干组测试数据,输入 (-1 -1) 时输入结束。每组测试数据以输入(0 0)为结束标志。然后根据所给的所有(父亲, 孩子)数据对判断 是否能构成一棵树。分析: 都以了解树只有一个根节点,那么我们就判断是不是有多个树;又知道每个节点只有一个父亲节点,那么我们就判断他是不是构成环, 成环则不是树。注意: ①可以是空树; ②所给的节点构成森林(多个树)是不可以原创 2015-04-24 22:12:29 · 457 阅读 · 0 评论 -
zoj2432 hdoj1423 最长公共上升子序列(LCIS)
zoj2432题目链接 hdoj题目链接题意: 一看题目题意就很明显了, 两个数组a,b,求出两个数组公共的最长的上升子序列(可以不是连续的子序列)。 分析: 如果做过最长公共子序列应该更容易明白点。 定义状态d[i][j]表示以a数组的前i个元素,b数组的前j个元素并且以b[j]为结尾的LCIS的长度。 首先:a[i] != b[j]时, d[i][j] = d[i-1][j]; 因原创 2015-05-01 11:37:18 · 514 阅读 · 0 评论 -
hdoj1874 (优先队列+Dijkstra)
[题目链接](http://acm.hdu.edu.cn/showproblem.php?pid=1874) 分析: 一看题目, 就是求最短路, 这道题用的是Dijkstra+优先队列。先说一下Dijkstra算法: 伪代码: 将所有节点状态初始化(标记为未计算) 设起始点s, d[s] = 0; 其他节点d[i] = MAX; 循环n次 { 在所有未标记的节点中, 选出d值最小的节点x; 标记节点x;原创 2015-05-19 22:41:22 · 473 阅读 · 0 评论 -
hdoj1285 拓扑排序
确定比赛名次 分析: 很明显,一看就是拓扑排序。 看似简单, 暗藏武器啊。 第一次做的时候一边拓扑排序一边标记他们的深度, 例如题中给的例子 {1 2;2 3;4 3 }。1的深度为1。 2、4的深度为2; 3的深度为3。 然后按深度的逆序输出深度相同的先输出小的。 其实不然啊!! 举个例子6个点, 边为{5, 3; 5,1; 5,4; 5,2; 3,1; 3,2; 6,4; 6,2;原创 2015-05-21 20:24:23 · 552 阅读 · 0 评论 -
hdoj1325 Is It A Tree?
hdoj1325 题目链接题意: 多组测试数据, 每组数据有多个数对, 表示一条有向边(即第一个数是第二个数的父节点), 以 0,0 为一组测试数据结束标志。当输入-1,-1时测试结束。 从那些给出的信息中判断是否是一棵树。 分析: 1、只可以有一个根节点, 也可以是一个点都没有的空树; 2、除了根节点, 每个点只有一个父节点。 3、因为只可以有一个父节点, 所以我们可以把一个合法的关系对原创 2015-05-19 20:19:33 · 562 阅读 · 0 评论 -
hdoj1584 蜘蛛牌 区间型DP
题目链接分析: f[i][j] 表示 把牌 i 到 j 摞为一串时花费最少的步数。 d[i][j] 表示把牌 i 挪到牌 j 上时需要走的步数(最初给的状态)。 以一串牌 3~8 为例, 我们需要把牌 3 放到牌 4 上 , 而在最优的移动方案下, 牌 4 的位置不确定, 所以我们枚举牌 4 所在的位置(因为一共10张牌, 枚举是可以的) , 这样得出状态转移方程: f[3][8] = mi原创 2015-06-09 21:47:37 · 492 阅读 · 0 评论 -
hdoj1423 最长上升公共子序列
hdoj1423这里写链接内容题目分析: 两个数组a[n1] , b[n2], 求最长上升公共子序列。 我们可用一维存储 f[i] 表示 b 数组以 j 结尾, 与 a[] 数组构成的最长公共上升子序列。 对数组 d 的任意 j 位, 都枚举 a[1 ~n1]。 当a[i] == b[j] 时 , 在1 ~ j - 1中 找出 b[k] 小于 a[ i ] 并且 d[k] 的值最大。 当原创 2015-06-15 22:29:31 · 480 阅读 · 0 评论