文章目录

  • A1114 Family Property (25 point(s))
  • Input Specification:
  • Output Specification:
  • Sample Input:
  • Sample Output:
  • Code
  • Analysis

Author: CHEN, Yue
Organization: 浙江大学
Time Limit: 200 ms
Memory Limit: 64 MB
Code Size Limit: 16 KB

A1114 Family Property (25 point(s))

This time, you are supposed to help us collect the data for family-owned property. Given each person’s family members, and the estate(房产)info under his/her own name, we need to know the size of each family, and the average area and number of sets of their real estate.

Input Specification:

Each input file contains one test case. For each case, the first line gives a positive integer N (≤1000). Then N lines follow, each gives the infomation of a person who owns estate in the format:

ID Father Mother k Child​1​​ ⋯Child​k​​ M​estate​​ Area

where ID is a unique 4-digit identification number for each person; Father and Mother are the ID’s of this person’s parents (if a parent has passed away, -1 will be given instead); k (0≤k≤5) is the number of children of this person; Child​i​​ 's are the ID’s of his/her children; M​estate​​ is the total number of sets of the real estate under his/her name; and Area is the total area of his/her estate.

Output Specification:

For each case, first print in a line the number of families (all the people that are related directly or indirectly are considered in the same family). Then output the family info in the format:

ID M AVG​sets​​ AVG​area
​​
where ID is the smallest ID in the family; M is the total number of family members; AVG​sets
​​ is the average number of sets of their real estate; and AVG​area​​ is the average area. The average numbers must be accurate up to 3 decimal places. The families must be given in descending order of their average areas, and in ascending order of the ID’s if there is a tie.

Sample Input:

10
6666 5551 5552 1 7777 1 100
1234 5678 9012 1 0002 2 300
8888 -1 -1 0 1 1000
2468 0001 0004 1 2222 1 500
7777 6666 -1 0 2 300
3721 -1 -1 1 2333 2 150
9012 -1 -1 3 1236 1235 1234 1 100
1235 5678 9012 0 1 50
2222 1236 2468 2 6661 6662 1 300
2333 -1 3721 3 6661 6662 6663 1 100

Sample Output:

3
8888 1 1.000 1000.000
0001 15 0.600 100.000
5551 4 0.750 100.000

Code

#include <stdio.h>
#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
struct NODE{int id;double aveares,aveestate;
};
bool cmp(NODE a,NODE b){if(a.aveares==b.aveares)    return a.id<b.id;else    return a.aveares>b.aveares;
}
map<int, int> estate,are;
int father[10000],cluCnt[10000],appear[10000];
vector<int> root,familymenber[10000];
vector<NODE> res;
int findFather(int x){if(x==father[x])    return x;else{int F=findFather(father[x]);father[x]=F;return F;}
}
void Union(int a,int b){int faA=findFather(a),faB=findFather(b);if(faA!=faB)    father[faA]=faB;
}
int main(){int n,id,fa,mo,k,child,mestate,area;scanf("%d",&n);for(int i=0;i<10000;i++)    father[i]=i;for(int i=0;i<n;i++){scanf("%d %d %d %d",&id,&fa,&mo,&k);appear[id]=1;if(mo!=-1){Union(id,mo);appear[mo]=1;}if(fa!=-1){Union(id,fa);appear[fa]=1;}for(int j=0;j<k;j++){scanf("%d",&child);Union(child,id);appear[child]=1;}scanf("%d %d",&mestate,&area);estate[id]=mestate;are[id]=area;}for(int i=0;i<10000;i++){if(appear[findFather(i)]==1){cluCnt[findFather(i)]++; //对一个集合中的元素计数,存在编号根节点编号的位置familymenber[findFather(i)].push_back(i);  //将一个集合的元素存在一起(为了取编号最小)}}for(int i=0;i<10000;i++){if(cluCnt[i]>0){root.push_back(i);}}for(int i=0;i<root.size();i++){sort(familymenber[root[i]].begin(),familymenber[root[i]].end());NODE temp;temp.id=familymenber[root[i]][0];temp.aveares=0;temp.aveestate=0;for(int j=0;j<10000;j++){if(findFather(j)==root[i]){temp.aveestate+=estate[j];temp.aveares+=are[j];}}temp.aveares=(double)temp.aveares/cluCnt[root[i]];temp.aveestate=(double)temp.aveestate/cluCnt[root[i]];res.push_back(temp);}sort(res.begin(),res.end(),cmp);printf("%d\n",root.size());for(int i=0;i<res.size();i++){printf("%.4d %d %.3f %.3f\n",res[i].id,cluCnt[findFather(res[i].id)],res[i].aveestate,res[i].aveares);}return 0;
}

Analysis

-已知每个家庭的父母,孩子,其自己名下的房产数和名下房产面积。

-求每个家庭的中最小ID号以及人口数,人均房产面积和房产套数。

【PAT】A1114 Family Property (25 point(s))相关推荐

  1. 【PAT】B1055 集体照(25 分)

    很简单的two points问题 ##注意:K是行数 #include<stdio.h> #include<string.h> #include<map> #inc ...

  2. 【PAT】1121. Damn Single (25)【哈希表】

    题目描述 "Damn Single (单身狗)" is the Chinese nickname for someone who is being single. You are ...

  3. 【PAT】乙级题目解答合集(c++)

    [PAT]乙级题目解答合集(c++) 本篇文章为对PAT乙级1001-1095的题目解答的汇总 1001 害死人不偿命的(3n+1)猜想 (15 分) 1002 写出这个数 (20 分) 1003 我 ...

  4. 【LeetCode】剑指 Offer 25. 合并两个排序的链表

    [LeetCode]剑指 Offer 25. 合并两个排序的链表 文章目录 [LeetCode]剑指 Offer 25. 合并两个排序的链表 一.递归 二.伪头节点 总结 一.递归 思路: 如果有一个 ...

  5. 【PAT】第四章 算法初步

    第四章 算法初步 目录 第四章 算法初步 4.1 排序 4.1.1 选择排序 4.1.2 插入排序 4.1.3 排序题与sort函数的应用 strcmp 计算排名 4.2 散列 4.2.1 散列 1. ...

  6. 【PAT】PAT总结《搜索、打表、分治、排序算法、队列、栈、堆、Hash》

    打表 打表这个技巧其实我们在素数部分的题已经涉及到了.还是要仔细思考,什么时候应该打表,打表有助于减少后续的计算的时候,我们应该打表, 特别是查询量特别大,即时计算无论多么快都会超时的情况.或者逆向运 ...

  7. 【置顶】【PAT】PAT甲级题目及分类总结(持续更新ing)

    在2019年3月底,我决定考浙大计院,经过一个月还算凑合的学习,痛定思痛,决定整理整理自己的博客. 粗略估计,大概一个月的时间里我AC了31道题,大概用时40个小时上下,毕竟还要把大部分时间花在笔试上 ...

  8. 【PAT】(B)1094 谷歌的招聘 (20 分)

    『题意描述』 2004 年 7 月,谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌(如下图)用于招聘.内容超级简单,就是一个以 .com 结尾的网址,而前面的网址是一个 10 位素数,这个素数是 ...

  9. 【PAT】乙级 1040 有几个PAT (25 分) c++

    1040 有几个PAT (25 分) 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位§,第 4 位 ...

最新文章

  1. 常考数据结构和算法:设计LRU缓存结构
  2. 知识图谱数据构建的“硬骨头”,阿里工程师如何拿下?
  3. 验证码广告:站长增加收入新渠道
  4. linux 常用命令05 常用的压缩与解压缩文件
  5. spring mvc学习(15)Referenced file contains errors
  6. 年薪15W的程序员因为掌握这个技能,薪资翻倍!
  7. yarn vite vue3.x
  8. 为什么持续集成和部署在开发中非常重要?
  9. zabbix批量操作
  10. 自定义Flash背景的相关设置方法以及其与目录下的文件的对应关系
  11. java连接FTP下载文件
  12. 投影机拼接融合技术--UE4拼接
  13. 7种大屏设计与布局思路,你不知道就亏了
  14. Java task类需要自己销毁_并发编程之线程创建到销毁、常用API
  15. 免证书发布ipa文件真机测试
  16. 学习u3d的几个工具和文档
  17. android studio 56 下载网络歌曲 代码
  18. Hadoop-感知网络布局和机架的设计
  19. Typewriter text that fits label beforehand
  20. 电子现金 圈存、补登

热门文章

  1. Word中插入手写体签名
  2. 【Linux学习】信号——信号保存 | 信号处理 | 不可重入函数,volatile,SIGCHLD信号
  3. mysql储存大文本_mysql 的大文本存储TEXT BLOB
  4. CVPR2019文章解读 Pyramid Feature Attention Network for Saliency detection 用于显著性检测的金字塔特征注意网络
  5. Linux-5.10源代码之网络系统简介:
  6. ppt如何转换成pdf
  7. javascript错误_JavaScript开发人员最常犯的10个错误
  8. Android调用系统设置界面
  9. MatLab 画图方法
  10. Android App收不到推送的消息