hdu 2473 Junk-Mail Filter 并查集删除

从MATLAB到PyTorch:复数向量/矩阵求导的工程实践手册与避坑指南 本文详细对比了MATLAB、NumPy/SciPy和PyTorch在复数向量/矩阵求导中的工程实践,重点解析了各工具链的实现差异与性能优化技巧。通过典型场景代码示例和性能测试数据,帮助开发者掌握复数梯度计算的核心概念与避坑指南,适用于无线通信系统设计和复数域深度学习等应用场景。 阅读详情

点击打开链接 http://acm.hdu.edu.cn/showproblem.php?pid=2473

题意:给出n种操作,M a b表示a和b是同一个并查集,S a表示在并查集中删除a,要注意的是,如果1和2是一个并查集,2和3是一个并查集,那么1和3也是一个并查集,即使删除2之后,我们依然可以得到1和3还是一个集合里的。

思路:由于并查集是一种树结构,无法在树中删除一个点后还让树继续保持着之前的样子,所以我们删除采取的操作是使用映射,一开始所有点的映射都是自己,然后删除操作就是把这个点映射到另一个不存在的点上,这样原来的点还在原来的集合中,用来保持着原先集合的各种属性,之后的所有对这个点的操作都是对它映射的点的操作。与一般的并查集不同的是,找父亲的操作,找的不是这个点本身的父亲,而是所有点的映射的父亲。


#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;

const int maxn=2000100;
int f[maxn],id[maxn];
bool a[maxn];

int fin(int x){
    if(x==f[x])
        return x;
    f[x]=fin(f[x]);
    return f[x];
}

int main()
{
    int cas=1;
    int n,m;
    while(cin>>n>>m){
        if(!n&&!m)
            break;
        for(int i=0;i<maxn;i++){
            f[i]=i;
            id[i]=i;
            a[i]=0;
        }
        char s;
        int b,c;
        int num=n;
        for(int i=0;i<m;i++){
            getchar();
            scanf("%c",&s);
            if(s=='M'){
                scanf("%d %d",&b,&c);
                int fb=fin(id[b]);
                int fc=fin(id[c]);
                if(fb!=fc)
                    f[fb]=fc;
            }
            else{
                scanf("%d",&b);
                id[b]=num++;
            }
        }
        int ans=0;
        for(int i=0;i<n;i++)
        if(a[fin(id[i])]==0){
            ans++;
            a[fin(id[i])]=1;
        }
        printf("Case #%d: %d\n",cas++,ans);
    }
    return 0;
}


 

HDU2473 - Junk-Mail Filter 利用虚拟数组实现删除并查集的节点 HDU2473 - Junk-Mail Filter 增加一个虚拟数组,实现"删除"并查集某个节点的功能 阅读详情

相关推荐

永磁同步电机定子槽型设计实战:从梨形槽到矩形槽的NVH优化之路

本文深入探讨了永磁同步电机定子槽型设计在NVH优化中的关键作用,对比了梨形槽与矩形槽的性能差异。通过Ansys Maxwell仿真和实际案例,揭示了矩形槽在提升槽满率、降低电磁噪声方面的优势,并总结了五大设计黄金法则,为电机设计工程师提供了实用指导。

weixin_28740299的博客 493

并查集 题1

问题描述 今天是Ignatius的生日。他邀请很多朋友。现在是晚餐时间。Ignatius想知道他至少需要多少张桌子。你必须注意到,并不是所有的朋友都认识对方,所有的朋友都不想留在陌生人身上。这个问题的一个重要规则是,如果我告诉你A知道B,B知道C,这意味着A,B,C彼此认识,所以他们可以留在一个表中。例如:如果我告诉你A知道B,B知道C,D知道E,所以A,B,C可以留在一个表中,D,E必须留在另一

daguniang123的博客 415

沈阳计算机研究所复试,沈阳计算所复试试题附答案.doc

沈阳计算所复试试题附答案目录数据结构1200612007220085200914操作系统16200616200718200818200919组成原理20200620200720200821200921经典算法22数据结构2006数据结构部分(共25分,第1题10分,第2题15分)在(下图)所示的有向图中:v1 v2v4 ...

weixin_42511053的博客 861

HDU2473 Junk-Mail Filter 【可删除的并查集】

HDU2473 Junk-Mail Filter 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. ...

Dream_maker的博客 408

Clang Static Analyzer 使用教程:本地 + CMake + GitHub Actions 自动静态分析实战

本文介绍了ClangStaticAnalyzer静态代码分析工具的使用方法。该工具基于Clang/LLVM,可检测C/C++代码中的内存泄漏、空指针等常见错误。主要内容包括:安装指南(Ubuntu/macOS/Windows)、命令行使用方法、CMake项目集成方案、GitHub Actions自动化分析配置,以及HTML报告生成与查看。文章还提供了官方资源链接,帮助开发者系统掌握从本地调试到持续集成的完整静态分析工作流,提升代码质量保障能力。适用于需要在开发过程中实施静态分析的C/C++项目。

u014358031的博客 2157

Rocky Linux 9.0国内yum源一键替换指南(上海交大镜像站实测)

本文详细介绍了如何将Rocky Linux 9.0的yum源替换为上海交大镜像站,以解决国内用户访问官方源速度慢的问题。通过实测验证,上海交大镜像站提供高速下载和稳定更新,并提供了完整的替换步骤、常见问题解决方案及高级优化配置,帮助用户提升软件包下载效率。

weixin_29304985的博客 361

HDU 2473 Junk-Mail Filter(并查集的删除操作)

题目地址:HDU 2473 这题以前碰到过,没做出来。。现在又做了做,还是没做出来。。、、 这题涉及到并查集的删除操作。想到了设一个虚节点,但是我把虚节点设为了要删除的点的父节点,一直是栈溢出,目测是无限递归了。看了看别人的做法, 原来只要建一个映射就可以了,虚节点是作为的新的映射,每次删除一个点,就把他映射到一个新的点上去。 代码如下: #include #include #incl

scf0920 1309

嵌入式常见英文2500词总结

嵌入式常见英文总结

qq_28576837的博客 1万+

hdu2473 Junk-Mail Filter (并查集删除节点)

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2473 题解:为每一个结点加一个虚根,这样每个结点都是叶子结点.插入结点时,把它们都并到虚根的集合中.删除结点时,只要把它的父结点置为一个无用的虚根。 #include #include #define MAXN 1000002 int father[MAXN<<1],flag

不可不戒 844

面向边缘计算的YOLOv12模型剪枝-蒸馏联合优化实战教程**

这套剪枝-蒸馏联合方案的优势在于其系统性和可靠性。它不是单一的技巧,而是一套完整的工程流程,确保了从研发到部署的无缝衔接。

FJN110的博客 158

基于Matlab的轨迹分析行为识别

本文将介绍基于Matlab的轨迹分析行为识别方法,并提供相应的源代码。在轨迹特征提取完成后,我们需要通过对于某一时间窗口内的轨迹特征进行聚合和分析,得到相应的行为特征。轨迹分析作为一种简单有效的行为识别方法,在实际应用中得到了广泛的应用。本文介绍了一种基于Matlab的轨迹分析行为识别方法,并提供相应的源代码作为参考。轨迹分析是指对于一定时间内某个对象在空间中运动的路径进行跟踪和分析的方法。在行为识别中,我们可以通过对于轨迹进行特征提取和分析,进而得到该对象的运动模式和行为特征。二、轨迹分析行为识别流程。

DevProPlus的博客 885

HDU 2473 Junk-Mail Filter 并查集 惰性删除

题意:对于1-N个数,我们又

leodestiny 753

LFI Scanner 本地文件包含漏洞扫描、文件路径遍历、敏感文件读取(etcpasswd)

✅ **敏感文件读取验证**:内置`/etc/passwd、/windows/system32/drivers/etc/hosts、phpinfo.php`等敏感文件字典,一键验证漏洞可利用性;🔴 **Windows**:`/windows/win.ini`(系统配置)、`/windows/system32/drivers/etc/hosts`;🔴 **Linux**:`/etc/passwd`(用户信息)、`/proc/version`(内核版本)、`/etc/hosts`(域名解析);

寒寒豆豆软件公司的博客 130

Hdu 2473(并查集删除操作) Junk-Mail Filter

并查集删除

wuhulala的休息室 1875

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

HDU-2473 Junk-Mail Filter(并查集的删除)

题目链接 题意:对n份邮件进行m次操作,操作分为两种:(1)M X Y:表示将右键X和邮件Y归为同一类邮件;(2)S X:表示将邮件X从X所属的一类邮件中取出(即X单独属于一类邮件)。 问m次操作后总的邮件种类是多少。 分析:常规的并查集是无法进行删除操作的,因为一旦根节点发生变化,其子节点的根节点信息就会丢失,于是我们需要将其变形,设置虚拟节点。首先将0~n-1的根节点设为n~2n-1,将2

CHeck_Check_check的博客 661

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

hdu2473 Junk-Mail Filter 并查集的删除

本题考查的是并查集的删除. 在删除结点的时候要注意这样的问题: 并查集的结构是一棵树,当把某一个结点删去(将其父结点置为自己)时,它的子结点的根就会丢失.因此,在删除某结点的时候,要确定它的所有子结点都已经并到根上了. 解决方法: 为每一个结点加一个虚根,这样每个结点都是叶子结点.插入结点时,把它们都并到虚根的集合中.删除结点时,只要把它的父结点置为一个无用的虚根 http://blog.c

幸福在路上 2656

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

并查集的删除—hdu 2473 Junk-Mail Filter

题目链接

Delacour_的专栏 582

HDU 2473 Junk-Mail Filter (并查集节点删除)

Junk-Mail Filter Time Limit: 15000/8000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7254Accepted Submission(s): 2307 Problem Description Recognizing j...

172

HDU 2473 Junk-Mail Filter(并查集删除节点)

Junk-Mail FilterTime Limit: 15000/8000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 10062    Accepted Submission(s): 3200Problem DescriptionRecognizing junk mails ...

albertluf的博客 231

并查集删除点 - Junk-Mail Filter(HDU2473)

传送门 Analysis 最粗暴的想法: 删除一个点,就将这个点的father设为自己 显然,错误 因为与这个点相连的其他点的父亲仍然没变 比如1,2,3的父亲都是1,现在删除1,1的父亲还是1,2,3也是1,集合还是1个,正确的应该是2个。 那稍微思考一下后: 删除一个点,就为这个点的father设一个新的节点 可是,还是错误 比如1,2,3的父亲都是1,现在删除1,1的父亲设为4,2,3目前...

Faithfully-xly的博客 245

【HDU - 2473 】【 Junk-Mail Filter 】(并查集的删除 入门)

题目: 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 cha...

哇哈哈哈的博客 230

hdu 2473 Junk-Mail Filter 并查集删除

#include #include #include #include using namespace std; const int N=1000005; int set[N]; int a[N]; bool vis[N]; int find(int x){ int r=x; while(r!=set[r]){ r=set[r]; } int temp=x; while(x!=r){

DieOrThink 604

HDU 2473-Junk-Mail Filter-并查集删除

#include #include #include int ls[2000000],_hash[2000000], d[2000000]; int find1(int x) { return ls[x] == x ? x : ls[x]=(find1(ls[x])); } void add(int x, int y) { int xx = find1(x); int y

命运在指间 545

HDU 2473 Junk-Mail Filter(并查集 | 删除操作)

该题比较经典,是并查集的删除操作。 并查集一般是用来合并和判断是否在一个集合的,因为这种树状结构如果真的删除一个结点,难说其结构会如何变化,难以高效的维护。 但是我们仍然有办法解决,我们可以通过给每个结点不断更新编号,让删除的点变成虚点,由于最多进行10^6次操作,因此,最多10^6+最大结点数个结点,开这么大的数组即可。 细节参见代码: #include #include #include

AC_Arthur的专栏 682
上一篇: hdu 1829 A Bug's Life 并查集
下一篇: poj 1679 The Unique MST 最小生成树
ACMer_浩
博客等级 码龄12年 0粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值