PTA甲级 1114 Family Property (25 point(s))
强烈推荐,刷PTA的朋友都认识一下柳神–PTA解法大佬
本文由参考于柳神博客写成
柳神的CSDN博客,这个可以搜索文章
柳神的个人博客,这个没有广告,但是不能搜索
还有就是非常非常有用的 算法笔记 全名是
算法笔记 上级训练实战指南 //这本都是PTA的题解
算法笔记
PS 今天也要加油鸭
题目原文
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* *C**h**i**l**d*1⋯*C**h**i**l**d**k* *M**e**s**t**a**t**e* `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; Mestate 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
AVGsets AVGarea
where ID
is the smallest ID in the family; M
is the total number of family members; AVGsets is the average number of sets of their real estate; and AVGarea 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
生词如下:
PS:这题就属于我看不懂的题目了.就都不懂.
肯定是和家庭收入有关.还有房子啥的.
肯定要用到树.这题算的东西不多.需要用到的主要也是树的遍历.
题目大意:
就是给你这样N行数据
格式为
你的ID 你爸的ID 你妈的ID K个孩子(K可以为0) 你的房产的数量 房产一共有多少面积
然后让你算出一共有几个家庭.
每个家庭一共有多少人.每个人平均能分到多少房子 平均能分到多少面积.
不会写
柳神思路:
分析:用并查集。分别用两个结构体数组,一个data用来接收数据,接收的时候顺便实现了并查集的操作union,另一个数组ans用来输出最后的答案,因为要计算家庭人数,所以用visit标记所有出现过的结点,对于每个结点的父结点,people++统计人数。标记flag == true,计算true的个数cnt就可以知道一共有多少个家庭。排序后输出前cnt个就是所求答案~~
Copy柳神代码
#include <cstdio>
#include <algorithm>
using namespace std;
struct DATA {int id, fid, mid, num, area;int cid[10];
}data[1005];
struct node {int id, people;double num, area;bool flag = false;
}ans[10000];
int father[10000];
bool visit[10000];
int find(int x) {while(x != father[x])x = father[x];return x;
}
void Union(int a, int b) {int faA = find(a);int faB = find(b);if(faA > faB)father[faA] = faB;else if(faA < faB)father[faB] = faA;
}
int cmp1(node a, node b) {if(a.area != b.area)return a.area > b.area;elsereturn a.id < b.id;
}
int main() {int n, k, cnt = 0;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", &data[i].id, &data[i].fid, &data[i].mid, &k);visit[data[i].id] = true;if(data[i].fid != -1) {visit[data[i].fid] = true;Union(data[i].fid, data[i].id);}if(data[i].mid != -1) {visit[data[i].mid] = true;Union(data[i].mid, data[i].id);}for(int j = 0; j < k; j++) {scanf("%d", &data[i].cid[j]);visit[data[i].cid[j]] = true;Union(data[i].cid[j], data[i].id);}scanf("%d %d", &data[i].num, &data[i].area);}for(int i = 0; i < n; i++) {int id = find(data[i].id);ans[id].id = id;ans[id].num += data[i].num;ans[id].area += data[i].area;ans[id].flag = true;}for(int i = 0; i < 10000; i++) {if(visit[i])ans[find(i)].people++;if(ans[i].flag)cnt++;}for(int i = 0; i < 10000; i++) {if(ans[i].flag) {ans[i].num = (double)(ans[i].num * 1.0 / ans[i].people);ans[i].area = (double)(ans[i].area * 1.0 / ans[i].people);}}sort(ans, ans + 10000, cmp1);printf("%d\n", cnt);for(int i = 0; i < cnt; i++)printf("%04d %d %.3f %.3f\n", ans[i].id, ans[i].people, ans[i].num, ans[i].area);return 0;
}
PTA甲级 1114 Family Property (25 point(s))相关推荐
- C++学习之路 | PTA(甲级)—— 1114 Family Property (25分)(带注释)(并查集)(精简)
1114 Family Property (25分) This time, you are supposed to help us collect the data for family-owned ...
- PAT甲级1114 Family Property:[C++题解]结构体、并查集、测试点3、4、5有问题的进来!!
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 先建边.读入每家的信息,在本人和父母(如果有的话),本人与子女(如果有的话)之间分别建边.边用结构体来存,边记录两个端点. 遍历每条 ...
- 1114. Family Property (25)-PAT甲级真题(并查集)
This time, you are supposed to help us collect the data for family-owned property. Given each person ...
- 1114 Family Property (25分) (并查集) 复杂题 经典并查集
This time, you are supposed to help us collect the data for family-owned property. Given each person ...
- 1114. Family Property (25)
//给定 id id的父亲 id的母亲(-1表示过世) k id的k个孩子 房产的数量 房产的面积 //求每个家庭(用最小的id存储)房产的总数 平均房产数量和面积(平均保留三位) //排序:平均面积 ...
- 1114 Family Property (25 分)【难度: 中/ 知识点: 并查集】
https://pintia.cn/problem-sets/994805342720868352/problems/994805356599820288 挺好的一个并查集,先读入然后再处理.注意:在 ...
- 【PAT】A1114 Family Property (25 point(s))
文章目录 A1114 Family Property (25 point(s)) Input Specification: Output Specification: Sample Input: Sa ...
- PTA秀恩爱分得快 (25分)
PTA秀恩爱分得快 (25分) 古人云:秀恩爱,分得快. 互联网上每天都有大量人发布大量照片,我们通过分析这些照片,可以分析人与人之间的亲密度.如果一张照片上出现了 K 个人,这些人两两间的亲密度就被 ...
- PTA甲级 1043 Is It a Binary Search Tree (25分) 树的遍历
强烈推荐,刷PTA的朋友都认识一下柳神–PTA解法大佬 本文由参考于柳神博客写成 柳神的CSDN博客,这个可以搜索文章 柳神的个人博客,这个没有广告,但是不能搜索 还有就是非常非常有用的 算法笔记 全 ...
- PTA甲级 1097 Deduplication on a Linked List (25分)-链表处理
文章目录 题目原文 Input Specification: Output Specification: Sample Input: Sample Output: 生词如下: 题目大意: 思路如下: ...
最新文章
- 2020-mb面试指南_2020年最佳代码面试准备平台
- arm linux嵌入式网络控制系统,基于ARM uCLinux的网络控制系统设计与实现
- python import gc_Python 2.6 GC似乎可以清理对象,但不会释放内存
- 全球及中国无菌粉末注射用橡胶塞行业运营模式分析及产销需求预测报告2021年版
- 三星Galaxy S22 Ultra更多细节:采用Note系列外观因素
- Android:自定义标题栏
- DRBD详细解说及配置过程记录
- IIS7下发布.NET1.1应用
- logistic回归__基于Python和Numpy函数库
- 航天有关的计算机知识,这些关于神舟十二上的电脑硬核小知识,你知道吗?
- DSP28335定时器
- 【干货摘录】和秋叶一起学PPT书本中干货集合、PPT设计必备网站、找字体网站
- LDO:低压差线性稳压芯片
- 移动端获取手机网络信息
- Android Studio Cannot resolve symbol 解决方法
- ARMv7体系结构汇总
- 【SFace】《SFace: An Efficient Network for Face Detection in Large Scale Variations》
- html转图片/html2canvas的使用/星座测试/类似于损友圈的活动
- 初中信息技术说课稿_小学信息课说课稿范文(精选6篇)
- 复杂网络-标准公开数据集
热门文章
- 《2020职场绿茶图鉴》
- Busboy 上传文件到指定目录,并重命名,node.js
- 自古逢秋悲寂寥,奈何今秋热成雕?Python使用Pyecharts统计全国温度Top10并绘图
- Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference (纯整数计算)
- python 档案管理系统_用Python编写人才档案管理系统?
- 完美商业计划书全攻略
- MVC 下 JsonResult 的使用方法(JsonRequestBehavior.AllowGet)
- [视频基础]流媒体码流、分辨率、采样率、比特率、gop、qp、fps、cvbr概念理解
- 阿里一面:SQL 优化有哪些技巧?
- 系统建模uml语言(用例图、实现类图、状态图、顺序图、活动图、组件图、部署图、详细类图、uml文档设计)