2012年3月10日
摘要: 一次AC,受宠若惊啊!呵呵,一看数据1<=n<=10000000,感觉有点大,很担心超时。题目要求求出最大集合的元素个数。思想是并查集,不会错。有人用了压缩路径的方法,我估计他也是怕在最后遍历时,求元素的根超时。我不太熟悉压缩路径,就在另设置了一个数组root[10000000], 用来存储以 i 为根的集合的元素个数。这样一来,在每次合并两棵树时,将两棵数的集合元素个数相加存放在 root[i]中。并设置全局变量 max,每次将新树的元素个数与 max 比大小。 最后输出 max 即为结果。 342AC代码:#include<stdio.h>int set[10000 阅读全文
posted @ 2012-03-10 12:27 hrbust_09zhangyabin 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 题目大意:Hopper教授正在研究一种稀有虫子的交配行为。他假设它们有两种性别并且它们只与异性交配。在他的实验中,很容易识别虫子和它们的交配行为,因为虫子背后印有编号。问题给定一组虫子的交配行为,确定实验是支持教授的假设即虫子没有同性恋,还是有部分交配行为不符合假设。这道题实际上还是并查集,和以往不同的是。以往给出两个元素的关系,然后认为这两个元素有联系,把它们划归为同一个集合。 最后看看能划分出多少个不同的集合。本道题,可以认为有两个集合,异性和同性。给出关系,希望你检查这两个集合有没有连接,即有没有同性恋。大体思路: ‘合并’操作, ‘查找’操作不变。设置一个sex[] 数组,sex[i] 阅读全文
posted @ 2012-03-10 10:58 hrbust_09zhangyabin 阅读(797) 评论(0) 推荐(0) 编辑