PAT甲级-1114 Family Property
题目



题目大意
共有n个户主,每个户主的房产按照“ 户主id 父亲id 母亲id 孩子个数 孩子的id 房产数 房产面积 ”的格式给出。如果父亲或母亲不存在,值为-1。每个户主及其父亲母亲孩子可以构成一个家庭,不同户主如果有相同的家人,那么就可以将两家联系起来组成一个大家庭。要求输出家庭数和家庭id(取家庭中的最小id),平均房产数,平均房产面积。输出按照平均房产面积从大到小排序,如果相同,按id从小到大排序。
思路
从一堆人中组团并求团的个数,并查集。由题可知,户主母亲父亲孩子不管是谁的id都是等价的,它们的共同祖先(家庭id)就是这群人中的最小id(题目中规定的)。每个家庭中的人可以合并,不同家庭中的人也可合并,合并的条件就是看两个人的家庭id是否相同以及一个人是否存在于两个家庭中。pre[]数组即记录每个人对应的家庭id;find()数组找到根节点,即其所属最大家庭的id;combine()合并两个人或集合;init()初始化,完成并查集的建立。另外还需要记录每个人对应的家庭成员数、房产数、房产大小,只有根节点对应的值才有效。
代码
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;int n;
int pre[10000]; // 并查集,记录前驱节点,为家庭id的最小值
vector<int> num(10000, 1); // 家庭成员数,初始化为1
int amount[10000] = {0}; // 房产数
int area[10000] = {0}; // 房产大小int find(int a){if (pre[a] == a){return a;}else{return pre[a] = find(pre[a]);}
} // 找某元素的根节点void combine(int a, int b){int root_a = find(a);int root_b = find(b);if (root_a == root_b){return;}if (root_a < root_b){pre[root_b] = root_a;num[root_a] += num[root_b];amount[root_a] += amount[root_b];area[root_a] += area[root_b];}else{pre[root_a] = root_b;num[root_b] += num[root_a];amount[root_b] += amount[root_a];area[root_b] += area[root_a];}
} // 合并两个不同的集合void init(){cin >> n;for (int i = 0; i < 10000; i++){pre[i] = i;} // 初始化pre数组for (int i = 0; i < n; i++){int id, f, m, k, amounts, areas;vector<int> p;cin >> id >> f >> m >> k;p.push_back(id);if (f != -1) p.push_back(f);if (m != -1) p.push_back(m);for (int j = 0; j < k; j++){int child;cin >> child;p.push_back(child);}cin >> amounts >> areas;sort(p.begin(), p.end());for (int j = 0; j < (int)p.size(); j++){combine(p[j], p[0]);} // 合并每一个家庭成员int root = find(id);amount[root] += amounts;area[root] += areas; // 累加到一个家庭中的根节点}
}struct family{int id;int total;double avg_amount;double avg_area;
};bool cmp(family x, family y){if (x.avg_area == y.avg_area){return x.id < y.id;}return x.avg_area > y.avg_area;
}int main(){init();vector<family> res;for (int i = 0; i < 10000; i++){if (pre[i] == i && (amount[i] > 0 || area[i] > 0)){res.push_back({i, num[i], amount[i] * 1.0 / num[i], area[i] * 1.0 / num[i]});}}sort(res.begin(), res.end(), cmp);cout << (int)res.size() << endl;for (int i = 0; i < (int)res.size(); i++){printf("%04d %d %.3lf %.3lf\n", res[i].id, res[i].total, res[i].avg_amount, res[i].avg_area);}return 0;
}
相关文章:
PAT甲级-1114 Family Property
题目 题目大意 共有n个户主,每个户主的房产按照“ 户主id 父亲id 母亲id 孩子个数 孩子的id 房产数 房产面积 ”的格式给出。如果父亲或母亲不存在,值为-1。每个户主及其父亲母亲孩子可以构成一个家庭,不同户主如果有相同的家人,…...
5.2 JavaScript 案例 - 轮播图
JavaScript - 轮播图 文章目录 JavaScript - 轮播图基础模版一、刷新页面随机轮播图案例二、轮播图 定时器版三、轮播图完整版 基础模版 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"…...
使用IP自签名SSL证书
最近需要创建WebSocket服务器并使用SSL证书,由于是内网测试,所以需要使用指定IP的自签SSL证书。 其实笔者前面博文 使用nexus3作为Docker镜像仓库 解决nexus3登录x509: certificate has expired or is not yet valid 中有创建过相应的证书,这…...
数据库中的运算符
1.算术运算符 算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行加()、减(-)、乘(*)、除(/)和取模(%&…...
定制erp真的很贵吗?
定制ERP真的很贵吗?这个问题,相信很多企业在考虑是否实施ERP系统时,都会纠结。特别是对于一些中小型企业,预算有限,心里总会有个疑问:花大价钱定制一个系统,真的值得吗?其实…...
Java Integer的数值比较
文章目录 环境问题答案说明解决办法其它总结 环境 Windows 11 专业版Java 21 问题 下面这段代码的运行结果是什么? Integer i1 0;int i2 0;for (int n 0; n < 200; n) {if (i1 ! i2) {System.out.println("i1 " i1 ", i2 " i2);b…...
QGroundControl之5-AppSettings.cc
介绍 应用程序设置 Application Settings ,这里看下语言选择功能,它是怎么和json文件关联起来的,刚刚看的时候,很是奇怪这么多的json文件作用。 1.AppSettings.cc 文件怎么和App.SettingsGroup.json关联 在AppSettings.cc文件没…...
Django Fixtures 使用指南:JSON 格式详解
在Django开发中,fixtures是一种非常有用的工具,它们可以帮助我们序列化数据库内容,并在不同的环境或测试中重用这些数据。本文将详细介绍Django fixtures的概念、如何生成和使用JSON格式的fixtures。 什么是Fixtures? Fixtures是…...
单元测试SpringBoot
添加测试专用属性 加载测试专用bean Web环境模拟测试 数据层测试回滚 测试用例数据设定...
邮件营销平台应如何提升外贸开发信的效果?
邮件营销平台在外贸中优势包括高效市场定位、成本效益、增强客户关系、实时反馈优化、全球覆盖及时区优化、环保可持续性。Geeksend邮件营销是强大平台,高效管理,精准销售,把握外贸市场的每一个机遇,助力外贸企业精准定位、简化管…...
绘制折线图遇到问题记录
绘制折线图 主要参考:https://blog.csdn.net/qq_38029916/article/details/121611066 对应代码 import csv import matplotlib.pyplot as plt import pandas as pd import numpy as np plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[font.family] sans…...
python 调Qt C++ 写法配置和坑点
python 示例写法 和调c动态库一样 通过回调函数方式 将python函数注册到c 动态库中 from ctypes import *def DllCall(nParam, nFlag):print(nParam, nFlag)z2 0.6z3 0.4z4 0.0z5 0.3z6 0.5z7 0.8z8 0.3z9 0.9strData str(z2) str(z3) str(z4) str(z5)…...
css设置透明的几种办法
在CSS中,有几种方法可以设置元素的透明度。以下是主要的几种方式: 1. 使用 opacity 属性 定义:opacity 属性用于设置元素的整体透明度,包括其内容和背景。取值范围:取值从0(完全透明)到1&…...
刷题日志【4】
目录 1、猜数字大小 1、猜数字大小 题意有点抽象,我大概讲一下,就是在1——n里面会有一个目标数,我们通过猜数字的方式逼近这个数字,直到解出这个数,之前我们是用二分法求最快达到求解的问题,这道题多了每…...
如何制作自己的字体文件.ttf
日常编程中,一些常用的符号可以直接用来当做图标使用,不需要引入过多的资源文件(例如:ico、png、svg等)十分方便! 笔者发现iconfont网站可以选择自己需要的图标,制作成.ttf文件来直接使用&…...
gradle在IDEA 中无法使用的启动守护线程的问题
最近打开一个比较早的项目,Gradle 配置没有问题,IDEA 打开Java项目却不能初始化守护线程,UI 上只能看到失败,看不到具体原因。 首先尝试了升级最新的gradle 版本8.11, 实际上这个版本在本地命令行都不能正常工作,没有…...
Spring Boot 配置多数据源并手动配置事务
Spring Boot 配置多数据源并手动配置事务 一、为什么多数据源需要手动配置?二、配置多数据源1. 数据源配置类 (DataSourceConfig)2. 主数据库 MyBatis 配置类 (PrimaryDbMyBatisConfig)3. 从数据库 MyBatis 配置类 (SecondaryDbMyBatisConfig)4. application.yml 配…...
YashanDB 23.2 YAC 共享集群部署和使用自带YMP迁移工具进行数据迁移,效果很city
1. 环境准备 本文以经典架构(2 台服务器,1 共享存储且包含 3 个及以上 LUN)为例,搭建双实例单库的共享集群环境。 主机名 IP 版本 CPU 内存 硬盘 用途 yac1 192.168.50.60 Kylin-Server-V10-SP3 4C 8G 100G YAC 集群…...
【数学】矩阵的逆与伪逆 EEGLAB
文章目录 前言matlab代码作用EEGLAB 中的代码总结参考文献 前言 在 EEGLAB 的使用中,运行程序时出现了矩阵接近奇异值,或者缩放错误。结果可能不准确。RCOND 1.873732e-20 的 bug,调查 EEGLAB 后发现是 raw 数据的问题。 matlab代码 A_1 …...
狐猬编程 C++ L3 第7课 字符串入门 元音字母
给你一个所有字符都是字母的字符串, 请输出其中元音字母的个数。(提示: 二十六个字母中的五个元音字母是 a, e, i, o, u; 所有字符有大小写区别。) 输入格式 仅一行, 包…...
Paste 轻量级剪贴板管理工具使用指南
Paste 轻量级剪贴板管理工具使用指南 【免费下载链接】paste A no-datastore, client-side paste service. 项目地址: https://gitcode.com/gh_mirrors/past/paste 一、场景化导入:当剪贴板成为你的效率瓶颈 想象一下这样的工作场景:你正在整理一…...
深入解析Spring AI与MilvusVectorStore的集成实践
1. Spring AI与MilvusVectorStore集成概述 当我们需要处理海量非结构化数据时,传统数据库往往力不从心。想象一下你有一个装满各种文档的仓库,每次查找相关内容都需要人工翻阅——这正是向量数据库要解决的问题。Spring AI与Milvus的集成就像给这个仓库配…...
【仅限核心开发者知晓】Polars 2.0清洗Pipeline的4层IR抽象:为何比Pandas快11.8倍?源码注释级解读
第一章:Polars 2.0清洗Pipeline的演进本质与性能跃迁全景Polars 2.0 将清洗 Pipeline 从“惰性执行显式优化提示”升级为“全图级自动重写零拷贝流式调度”,其本质是将数据清洗从过程式编排转向声明式语义图推理。核心突破在于 LazyFrame 的物理计划生成…...
电视盒变身记:3步打造你的家庭全能服务器,闲置设备重获新生!
电视盒变身记:3步打造你的家庭全能服务器,闲置设备重获新生! 【免费下载链接】amlogic-s9xxx-armbian amlogic-s9xxx-armbian: 该项目提供了为Amlogic、Rockchip和Allwinner盒子构建的Armbian系统镜像,支持多种设备,允…...
Network Connection Class深度优化:10个提升网络检测精度的技巧
Network Connection Class深度优化:10个提升网络检测精度的技巧 【免费下载链接】network-connection-class Listen to current network traffic in the app and categorize the quality of the network. 项目地址: https://gitcode.com/gh_mirrors/ne/network-co…...
如何通过DeepWiki实现本地部署的智能文档生成与数据安全保障?
如何通过DeepWiki实现本地部署的智能文档生成与数据安全保障? 【免费下载链接】deepwiki-open Open Source DeepWiki: AI-Powered Wiki Generator for GitHub Repositories 项目地址: https://gitcode.com/gh_mirrors/de/deepwiki-open 在数字化开发的浪潮中…...
VINS-Mono跑EUROC数据集后,如何用evo工具包进行轨迹精度评估与可视化(附完整命令)
VINS-Mono轨迹精度评估实战:从EUROC数据集到evo工具包全流程解析 在完成VINS-Mono算法在EUROC数据集上的运行后,如何科学评估其轨迹精度成为算法优化和论文撰写的关键环节。本文将深入讲解使用evo工具包进行定量分析的完整流程,涵盖指标计算、…...
Qwen-Turbo-BF16部署教程:WebUI响应延迟优化与Nginx反向代理配置
Qwen-Turbo-BF16部署教程:WebUI响应延迟优化与Nginx反向代理配置 1. 引言:从“黑图”到秒级出图,你的4090准备好了吗? 如果你用过一些开源的图像生成WebUI,可能遇到过这样的尴尬:输入了精心构思的提示词&…...
JS逆向新手也能搞定:手把手教你用Node.js补全ali140滑块canvas环境(附完整代码)
JS逆向新手也能搞定:手把手教你用Node.js补全ali140滑块canvas环境(附完整代码) 第一次接触JS逆向时,看到那些复杂的加密逻辑和环境检测代码,确实让人望而生畏。特别是遇到canvas这种需要模拟浏览器环境的场景…...
Realistic Vision V5.1显存占用对比:启用offload前后VRAM峰值下降62%实测
Realistic Vision V5.1显存占用对比:启用offload前后VRAM峰值下降62%实测 1. 项目背景与技术特点 Realistic Vision V5.1是目前Stable Diffusion 1.5生态中最顶级的写实风格模型之一,能够生成媲美专业单反相机拍摄的人像作品。然而在实际使用中&#x…...
