CodeUp Problem D: More is better
根据题目意思,输入的每一对A、B都是直接朋友,并且最后只会得到一个集合,该集合就是Mr Wang选择的男孩。
因此很容易写出代码,甚至不需要自己构建一个并查集,只需要使用C++的set模板,每次读入一对A、B,就把A、B插入集合,最后集合的大小就是Mr Wang选择的男孩个数。
但是只得了50分,仔细分析一下,可能是“只有一个集合”这一个假定错误,应该在输入数据中包含多个集合的假定下写代码。
转变思路为:
- 仍然用数组实现一个并查集。
- 另外开一个数组counts,counts[i]表示节点i为根节点时对应集合的大小。
- 维护一个计数器maxcnt,用来存当前大小最大的集合数量,每次进行集合合并时都尝试更新maxcnt。
- 合并完所有元素后也能得到最大集合的大小。
- #include <cstdio>
- #include <algorithm>
- using namespace std;
- const int maxn = 10000010;
- int maxcnt, cnts[maxn];
- int father[maxn];
- int FindFather(int father[], int b)
- {
- int x = b;
- while (x != father[x])
- {
- x = father[x];
- }
- int a = b;
- while (a != father[a])
- {
- int z = father[a];
- father[a] = x;
- a = z;
- }
- return x;
- }
- void Union(int father[], int b1, int b2)
- {
- int fa1 = FindFather(father, b1);
- int fa2 = FindFather(father, b2);
- if (fa1 != fa2)//这个判断一定一定不能少,如果不先判断fa1是否等于fa2,会导致同一个集合大小翻倍,导致出错
- {
- father[fa1] = fa2;
- cnts[fa2] += cnts[fa1];
- }
- maxcnt = max(maxcnt, cnts[fa2]);
- return;
- }
- void Init(int father[], int n)
- {
- for (size_t i = 1; i <= n; i++)
- {
- father[i] = i;
- cnts[i] = 1;
- }
- maxcnt = 1;
- }
- int main(int argc, char** argv) {
- int linen, a, b;
- while (scanf("%d", &linen) != EOF)
- {
- Init(father, maxn);
- while (linen--)
- {
- scanf("%d%d", &a, &b);
- Union(father, a, b);
- }
- printf("%d\n", maxcnt);
- }
- return 0;
- }
CodeUp Problem D: More is better的更多相关文章
- Codeup 25609 Problem I 习题5-10 分数序列求和
题目描述 有如下分数序列 2/1,3/2,5/3,8/5,13/8,21/13 - 求出次数列的前20项之和. 请将结果的数据类型定义为double类型. 输入 无 输出 小数点后保留6位小数,末尾输 ...
- Codeup 25594 Problem H 例题5-8 Fibonacci数列
题目描述 输入一个正整数n,求Fibonacci数列的第n个数.Fibonacci数列的特点:第1,2个数为1,1.从第3个数开始,概述是前面两个数之和.即: 1,1,2,3,5,8,13,21 - ...
- Codeup 25593 Problem G 例题5-7 求圆周率pi的近似值
题目描述 用如下公式 4*Π = 1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + 1/13 - 1/15 - 求圆周率PI的近似值,直到发现某一项的绝对值小于10-6为止(该项不 ...
- 1199 Problem B: 大小关系
求有限集传递闭包的 Floyd Warshall 算法(矩阵实现) 其实就三重循环.zzuoj 1199 题 链接 http://acm.zzu.edu.cn:8000/problem.php?id= ...
- No-args constructor for class X does not exist. Register an InstanceCreator with Gson for this type to fix this problem.
Gson解析JSON字符串时出现了下面的错误: No-args constructor for class X does not exist. Register an InstanceCreator ...
- C - NP-Hard Problem(二分图判定-染色法)
C - NP-Hard Problem Crawling in process... Crawling failed Time Limit:2000MS Memory Limit:262144 ...
- Time Consume Problem
I joined the NodeJS online Course three weeks ago, but now I'm late about 2 weeks. I pay the codesch ...
- Programming Contest Problem Types
Programming Contest Problem Types Hal Burch conducted an analysis over spring break of 1999 and ...
- hdu1032 Train Problem II (卡特兰数)
题意: 给你一个数n,表示有n辆火车,编号从1到n,入站,问你有多少种出站的可能. (题于文末) 知识点: ps:百度百科的卡特兰数讲的不错,注意看其参考的博客. 卡特兰数(Catalan):前 ...
随机推荐
- termux vim 配置 自动补全 遇到的问题
// 自动不全需要安装 pkg install proot -y // 用proot可以为手机没有root的用户来模拟一个root的环境,这里主要是经典的 Linux 文件系统布局上的模拟. //执行 ...
- windows内核基础与异常处理
前两日碰到了用异常处理来做加密的re题目 所以系统学习一下windows内核相关 windows内核基础 权限级别 内核层:R0 零环 核心态工作区域 大多数驱动程序 应用层:R3 用户态工作区域 只 ...
- 微服务从代码到k8s部署应有尽有系列(一)
从本篇文章开始,我们用一个系列来讲解从需求到上线.从代码到k8s部署.从日志到监控等各个方面的微服务完整实践. 实战项目地址:https://github.com/Mikaelemmmm/go-zer ...
- [技术干货-算子使用] mindspore.scipy 入门使用指导
1. MindSpore框架的SciPy模块 SciPy 是基于NumPy实现的科学计算库,主要用于数学.物理学.生物学等科学以及工程学领域.诸如高阶迭代,线性代数求解等都会需要用到SicPy.Sci ...
- suse 12 二进制部署 Kubernetets 1.19.7 - 第01章 - 创建CA证书和kubectl集群管理命令
文章目录 1.kubernetes集群部署 1.0.创建CA证书和秘钥 1.0.0.安装cfssl工具 1.0.1.创建根证书 1.0.2.创建证书签名请求文件 1.0.3.生成CA证书和秘钥 1.0 ...
- 【摸鱼神器】基于SSM风格的Java源代码生成器 单表生成 一对一、一对多、多对多连接查询生成
一.序言 UCode Cms 是一款Maven版的Java源代码生成器,是快速构建项目的利器.代码生成器模块属于可拆卸模块,即按需引入.代码生成器生成SSM(Spring.SpringBoot.Myb ...
- vue实例中的watch属性
watch 就是监听,当数据发生改变的时候就执行 data:{ num1:1, num2:2 }, watch:{ num1(newValue){ }, num2(newValue,oldValue) ...
- 教你如何使用flask实现ajax数据入库
摘要:在正式编写前需要了解一下如何在 python 函数中去判断,一个请求是 get 还是 post. 本文分享自华为云社区<[首发]flask 实现ajax 数据入库,并掌握文件上传>, ...
- IP欺骗实验
实验目的 1.掌握IP欺骗的原理 2.学会利用IPSpoof软件工具进行伪造源IP地址的IP欺骗. 实验内容 使用IPSpoof进行本机IP地址修改,与目标主机通信,进行IP欺骗实验 实验环境描述 1 ...
- RFC2544优化步长测试——信而泰网络测试仪实操
一.测试拓扑 拓扑说明 1.测试仪两个端口和DUT两个端口相连 2.测试仪P1端口发出流量,经过DUT转发后,从B端口发出,进入测试仪P2端口. 二.测试思路 1.在测试仪端口上创建两个Interfa ...