_what

博客园 首页 新随笔 联系 订阅 管理

2019年10月14日 #

摘要: D. Paint the Tree 题意: 给出一棵树,有三种颜色,要求任意链上的三点的颜色是不一样的,每个点图3种颜色都有自己的花费值,问最小的花费 Solution: 显然一个点度超过2,那么这3个点颜色都不同,无解 所以度都为1,2。树退化成链。 确定了第1,2个,第3个点也唯一确定了(不和1 阅读全文
posted @ 2019-10-14 20:53 _what 阅读(189) 评论(0) 推荐(0) 编辑

摘要: DFS过程中,对于一条边u v vis[v] = 0,说明v还没被访问,v是首次被发现,u v是一条树边 vis[v] = 1,说明v已经被访问,但其子孙后代还没有被访问完(正在访问中),而u又指向v?说明u就是v的子孙后代,u v是一条后向边,因此后向边又称返祖边 vis[v] = 3,z说明v已 阅读全文
posted @ 2019-10-14 14:03 _what 阅读(356) 评论(0) 推荐(0) 编辑

摘要: [点连通度与边连通度] 在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边之后,原图变成多个联通块,就称这个点集为割点集合。 一个图的点连通度定义为,最小个点集合中的顶点数。 类似的,如果有一个边集合,删除这个编辑和以后,原图变成多个连通块,就成这个边集为割边 阅读全文
posted @ 2019-10-14 13:43 _what 阅读(496) 评论(0) 推荐(0) 编辑

2019年10月13日 #

摘要: 题意:给出N条父子关系,询问M条两人最近公共祖先,没有就输出 1. 分析: 用map 每个儿子映射父亲, 开始找最近的公共祖先,先找第一个人的祖先,所有祖先都标记; 然后从第二个人开始找,如果找到被标记的,就是他们最近的公共祖先,输出, 如果第二个人的祖先找完也没有找到,那就没有公共的祖先,输出 1 阅读全文
posted @ 2019-10-13 15:33 _what 阅读(138) 评论(0) 推荐(0) 编辑

2019年10月11日 #

摘要: 之前写会场问题都是用贪心,很麻烦。(给出开始结束时间,求最少需要房间数) 差分写法如下: 阅读全文
posted @ 2019-10-11 21:02 _what 阅读(168) 评论(0) 推荐(0) 编辑

摘要: 大意:给定A数组B数组,从中选择N K个使得R最大,输出Round(100 R); 01分数规划问题思路大抵如此,但是有的题目的限制条件苛刻,题目就变难了。 分析:限制很简单,只是数目上有所限制,处理方法也很简单,求出D数组后从大到小排列,从先前向后取N K个即可,这时的D一定是最大的 二分 l 当 阅读全文
posted @ 2019-10-11 15:07 _what 阅读(154) 评论(0) 推荐(0) 编辑

摘要: 题意:已知二叉树前序和中序遍历,求后序遍历 Solution: 要求解post order(str1, str2)的话,首先不难发现,根据‘前序遍历’str1=‘根节点’+‘左子树的前序遍历’+‘右子树的前序遍历’,我可以知道这棵二叉树的根节点root便是str1的第一个字符 在知道了‘根节点’ro 阅读全文
posted @ 2019-10-11 09:26 _what 阅读(133) 评论(0) 推荐(0) 编辑

摘要: 枚举每一个点作为转折点t,求出以t为根节点的子树中的‘最长路’以及与‘最长路’不重合的‘次长路’,用这两条路的长度之和去更新答案,那么最终的答案就是这棵树的最长路长度了 用first(t),second(t)分别表示以t为根节点的子树中最长路和次长路的长度,那么我只需要求出t的所有子结点的first 阅读全文
posted @ 2019-10-11 09:11 _what 阅读(155) 评论(0) 推荐(0) 编辑

2019年10月10日 #

摘要: 题意:求连通的m个节点最大权值和。 dp过程类似背包问题,不用单独的求解每一个f(t, m)而是针对于每一个t,同时求解它的f(t, 0..M)。 自己思考的话比较难, 现在也没有彻底理解, 为什么这样就可以满足连通的要求。 / / include include include include i 阅读全文
posted @ 2019-10-10 20:34 _what 阅读(145) 评论(0) 推荐(0) 编辑

摘要: 每条边至少要有一个端点有士兵,求最少需要士兵数。 因此,如果子树的根节点不放士兵,那么其所有的直接儿子节点必须都放上士兵。 状态转移方程: sol[root][0] += sol[G[root][i]][1]; sol[root][1] += min(sol[G[root][i]][0], sol[ 阅读全文
posted @ 2019-10-10 20:24 _what 阅读(143) 评论(0) 推荐(0) 编辑