博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1114 Family Property
阅读量:6125 次
发布时间:2019-06-21

本文共 1001 字,大约阅读时间需要 3 分钟。

题意:给出n个人的id,他父母的id,孩子个数,孩子的id,以及在其名下的房产套数和房产面积。求每个家庭的人数,人均房产套数和人均房产面积,并以该家庭中id最小的那个表示这个家庭。

思路:所谓家庭,就是所有有亲戚关系的人组成的一个集合(如a是b的孩子,而c又是a的孩子...),这在提醒我们应该使用并查集。本题的信息量较多,首先,在输入数据时对id进行合并,这里的Union()函数稍微有点不同,因为题目要求最后输出每个家庭的id是其所有成员中最小的那个,因此在合并时,选择较小值作为两个集合的根(见代码);其次,用exist[id]标记某个id是否出现过,用于后面遍历统计家庭的人数和房产信息。为了不易混淆,本题使用两个结构体来存储信息,一个是Struct Family{...},记录一个家庭的id,总数人,平均房产等信息,用于最后的输出;另一个是Struct Person{...},仅用于读入数据时记录某人的房产信息,在之后的处理中会累加到Family中。接下来开始处理数据,首先遍历0~maxn,统计每个家庭的人数等信息,然后再次遍历,统计家庭个数,最后排序、输出。

代码:

#include 
#include
using namespace std; const int maxn=10005;int exist[maxn]={
0}; struct Family{ int id,member,totArea,totSets; double avgArea,avgSets; Family(){ id=member=totArea=totSets=0; avgArea=avgSets=0; }}family[maxn];struct Person{ int area,sets; Person():area(0),sets(0){}}p[maxn];int father[maxn];void Init(){ for(int i=0;i
b.avgArea; else return a.id

 

转载于:https://www.cnblogs.com/kkmjy/p/9588509.html

你可能感兴趣的文章
焊盘 往同一个方向增加 固定的长度方法 总结
查看>>
eclipse的maven、Scala环境搭建
查看>>
架构师之路(一)- 什么是软件架构
查看>>
jquery的冒泡和默认行为
查看>>
USACO 土地购买
查看>>
【原创】远景能源面试--一面
查看>>
B1010.一元多项式求导(25)
查看>>
10、程序员和编译器之间的关系
查看>>
前端学习之正则表达式
查看>>
配置 RAILS FOR JRUBY1.7.4
查看>>
AndroidStudio中导入SlidingMenu报错解决方案
查看>>
修改GRUB2背景图片
查看>>
Ajax异步
查看>>
好记性不如烂笔杆-android学习笔记<十六> switcher和gallery
查看>>
JAVA GC
查看>>
codeforce 599B Spongebob and Joke
查看>>
3springboot:springboot配置文件(外部配置加载顺序、自动配置原理,@Conditional)
查看>>
9、Dubbo-配置(4)
查看>>
前端第七天
查看>>
BZOJ 2190[SDOI2008]仪仗队
查看>>