数据结构
文章平均质量分 65
xu960218
这个作者很懒,什么都没留下…
展开
-
[堆]种树
在n个数中选出至多k个数,且两两不相邻,并使所选数的和最大。很容易想到动规思路:f[i][j]表示种到第i棵树且种了j棵的最大获利,则f[i][j]=max(f[i-1][j],f[i-2][j-1]+a[i]),注意边界、初始化即可。但是,对于n我们先进行小规模枚举:k=1时,显然取n个数中取最大的即可(暂不考虑全负的情况)。设最大的数是a[i]。k=2时,则有两原创 2013-10-12 21:50:27 · 645 阅读 · 0 评论 -
左偏树
我们定义节点i为外节点,当且仅当i的左子树或右子树为空。一个节点的距离为他到他后代中,最近的外节点所经过的边数。特别的,如果一个节点本身为外节点,则这个节点的距离为0。一棵子树的距离为这棵子树根节点的距离。(为了方便,可将空节点的距离为-1。)左偏树的左偏性质即左偏树的每个节点左子节点的距离都不小于右子节点的距离。//----------------原创 2013-08-24 11:09:55 · 670 阅读 · 0 评论 -
[贪心][Usaco2010 Mar]balloc 农场分配
Mar]balloc 农场分配">solution:我们将所有区间按照左端点排序后,从右往左,能添加则添加不能就不添加,这样贪心是正确的。因为我们可以维护两个性质:1.最大性2.方案对后面的区间一定是最优的。证明略。能这么做的原因是因为这道题是无权的。假如区间有权的话,那么等价于选出K条路径,路径上每个区间不相交且权值最大,可以用费用流做。#原创 2013-10-15 21:49:42 · 1089 阅读 · 0 评论 -
[并查集]染色问题
题目大意:平面上有n个珠子排成一排, 每个珠子初始颜色为0,你要对他们进行m次染色,每次你选定l和r,然后把[l,r]之间的珠子染成编号c的颜色,每个珠子的最终颜色为它曾经染过的编号最大的颜色,统计每个珠子最终的颜色。由于数据较大,为了减少输出所用的不必要的时间,请采取以下方法输出:假如a[i]为第i个珠子的最终颜色for i := 1 to n do ans := (an原创 2013-10-17 08:30:37 · 1521 阅读 · 0 评论 -
[并查集]最优路线
题目大意:给定一个n点m边的无向图,一个起点s,一个终点t请你找一条从s到t的路径,保证路径上边的最大权值与最小权值的比值最小如果有,输出比值,否则输出"IMPOSSIBLE"n solution:O(m2)的枚举很好想到 ..O(mlongm):1.按边权值排序,标号1~m2.初始化一个枚举原创 2013-10-16 15:45:32 · 844 阅读 · 0 评论 -
[树Dfs][Usaco2010 Mar]gather奶牛大集会
题目大意: Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会。当然,她会选择最方便的地点来举办这次集会。每个奶牛居住在 N(1solution:1、将树看成以1为根的一棵有根树。2、用一个s[N]记录该节点以下的牛的个数。3、用一个a[N]表示该节点为聚会地点时,奶牛们的不方便程度。那么有:s[ i ]=v[i]+s[ s(i原创 2013-10-15 21:43:34 · 741 阅读 · 0 评论