hdu 2473 Junk-Mail Filter】的更多相关文章

题目来源:pid=2473">HDU 2473 Junk-Mail Filter 题意:2中操作 M x, y 将x,y 合并到一个集合 S x 将x从所在的集合去掉 自己成为一个集合 最后求有多少个集合 思路:删点不好做 能够假设0 1 2在一个集合 能够定义个数组映射 就是每一个点所相应实际的点 開始是a[0] = 0 a[1] = 1 a[2] = 2 如今要去掉2 能够定义一个新的点 原来的要删的点留着 原来a[2] = 2 a[2] = 3 如今的3就是原来的第二个2点 仅仅只是…
题目地址:pid=2473">HDU 2473 这题曾经碰到过,没做出来. .如今又做了做,还是没做出来. ... 这题涉及到并查集的删除操作.想到了设一个虚节点,可是我把虚节点设为了要删除的点的父节点.一直是栈溢出,目測是无限递归了. 看了看别人的做法. 原来仅仅要建一个映射就能够了,虚节点是作为的新的映射,每次删除一个点,就把他映射到一个新的点上去. 代码例如以下: #include <iostream> #include <cstdio> #include &…
Junk-Mail Filter Time Limit: 15000/8000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6276    Accepted Submission(s): 1981 Problem Description Recognizing junk mails is a tough task. The method used here consists o…
http://acm.hdu.edu.cn/showproblem.php?pid=2473 并查集设置虚拟父节点. #include <cstdio> #include <cstring> #include <algorithm> #define maxn 1100000 using namespace std; int f[maxn],num[maxn]; int in[maxn],n,m; void inti() { ; i<n; i++) { f[i]=i…
Problem Description Recognizing junk mails is a tough task. The method used here consists of two steps:1) Extract the common characteristics from the incoming email.2) Use a filter matching the set of common characteristics extracted to determine whe…
Junk-Mail Filter Time Limit: 15000/8000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 8640    Accepted Submission(s): 2735 Problem Description Recognizing junk mails is a tough task. The method used here consists…
http://acm.hdu.edu.cn/showproblem.php?pid=2473 给定两种操作 第一种是合并X Y 第二种是把X分离出来,就是从原来的集合中分离出来,其它的关系不变. 关键是怎么分离,可以考虑把它变成一个其它值.HASH[i] = other_val 然后用新值去做并查集即可. 需要注意的一点就是 假如现在根是1,fa[1] = 1, fa[2] = 1, fa[3] = 1 那么如果你删除了1,这应该输出2.但是现在是fa[2] = 1,是一个不存在的根了,这个时候…
http://acm.hdu.edu.cn/showproblem.php?pid=2473 http://acm.fzu.edu.cn/problem.php?pid=2155 题目大意: 编号0~n-1的电子邮件,让你进行归类. M X Y表示x y是同一类的,而S X则取消之前X的分类.问你经过M次这样的操作后,有多少类相同的邮件. 思路: 下午FZU月赛有这题.不过我没参加- -||||,先暂时退出ACM一段时间.事情多.得先去搞定那个外包的软件了 并查集的应用.多开了一个数组real,…
Problem - 2473 为什么标题写的是暴力并查集?因为我的解法跟网上的有所不同,方法暴力很多. 先解释题意,这是一个模拟处理垃圾邮件的问题.垃圾邮件要根据它们的性质进行分类.对于10w个邮件,操作M是这两个邮件具有相同的属性,属性是可以传递的,也就是说,1和2有相同属性,2和3有相同属性,那么1和3就有相同属性.操作S是将这个邮件分离出来,不和任何的邮件有相同属性.最后问不同属性的邮件有多少种.这么看来,这是一个并查集.网上的正解,是把那个删除的结点当成虚拟结点,继续放在那里.然后重新开…
题意:有N封邮件, 然后又两种操作,如果是M X Y , 表示X和Y是相同的邮件.如果是S X,那么表示对X的判断是错误的,X是不属于X当前所在的那个集合,要把X分离出来,让X变成单独的一个.最后问集合的个数. 方法一:设立虚父节点 思路:n~n+n-1作为一开始初始化的根节点,而0~n-1作为虚拟根节点(即初试时它们指向n~n+n-1),之后删除节点操作时用n+n-1~n+n+m作为备用节点. 删除时直接修改0~n-1指向的节点(即0~n-1的父亲的值)变为备用节点 设cnt为备用节点,假如一…