当前位置:网站首页>L2-007 家庭房产 (25 分)
L2-007 家庭房产 (25 分)
2022-07-06 09:14:00 【%xiao Q】
题目
给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。
输入格式:
输入第一行给出一个正整数N(≤1000),随后N行,每行按下列格式给出一个人的房产:
编号 父 母 k 孩子1 … 孩子k 房产套数 总面积
其中编号是每个人独有的一个4位数的编号;父和母分别是该编号对应的这个人的父母的编号(如果已经过世,则显示-1);k(0≤k≤5)是该人的子女的个数;孩子i是其子女的编号。
输出格式:
首先在第一行输出家庭个数(所有有亲属关系的人都属于同一个家庭)。随后按下列格式输出每个家庭的信息:
家庭成员的最小编号 家庭人口数 人均房产套数 人均房产面积
其中人均值要求保留小数点后3位。家庭信息首先按人均面积降序输出,若有并列,则按成员编号的升序输出。
输入样例:
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
输出样例:
3
8888 1 1.000 1000.000
0001 15 0.600 100.000
5551 4 0.750 100.000
分析
一道并查集的题目,详情请看代码!!!
参考代码:
#include <iostream>
#include <cstdio>
#include <set>
#include <vector>
#include <cstring>
#include <cmath>
#include <queue>
#include <stack>
#include <algorithm>
#include <unordered_map>
#define LL long long
#define rep(i, a, b) for(int i = a; i <= b; i++)
#define reps(i, a, b) for(int i = a; i < b; i++)
#define pre(i, a, b) for(int i = b; i >= a; i--)
using namespace std;
const int N = 1010, M = 1e4;
int n;
bool st[M]; // 标记那些id出现过
int p[M];
struct data
{
int id, num, area;
}a[N];
struct stu
{
int id, people;
double num, area;
bool flag;
}ans[M];
// 寻找父节点
int find(int x)
{
while(x != p[x]) x = p[x];
return x;
}
// 合并2个子树
void Union(int x, int y)
{
int fx = find(x);
int fy = find(y);
if(fx > fy) p[fx] = fy;
else p[fy] = fx;
}
bool cmp(stu x, stu y)
{
if(x.area != y.area) return x.area > y.area;
return x.id < y.id;
}
int main()
{
cin >> n;
rep(i, 0, M) p[i] = i; //初始化所有的点的父节点为自己
rep(i, 1, n)
{
int id, d_id, m_id, k, son, num, area;
cin >> id >> d_id >> m_id;
st[id] = true;
if(d_id != -1)
{
st[d_id] = true;
Union(id, d_id);
}
if(m_id != -1)
{
st[m_id] = true;
Union(id, m_id);
}
cin >> k;
while(k--)
{
cin >> son;
st[son] = true;
Union(id, son);
}
cin >> num >> area;
a[i] = {
id, num, area};
}
rep(i, 1, n)
{
int id = find(a[i].id);
ans[id].id = id;
ans[id].num += a[i].num;
ans[id].area += a[i].area;
ans[id].flag = true; // 标记家族个数
}
int cnt = 0;
// 因为id数据范围不大,直接枚举所有可能出现的4为数id,并利用怕并查集来累加家族人群
rep(i, 0, 9999)
{
if(st[i]) ans[find(i)].people++;
if(ans[i].flag) cnt++;
}
rep(i, 0, 9999)
if(ans[i].flag)
{
ans[i].num = ans[i].num / ans[i].people;
ans[i].area = ans[i].area / ans[i].people;
}
sort(ans, ans + M, cmp);
cout << cnt << endl;
// 因为是按平均面积来降序输出的,所以可以直接排完序直接输出
rep(i, 0, cnt - 1)
printf("%04d %d %.3f %.3f\n", ans[i].id, ans[i].people, ans[i].num, ans[i].area);
return 0;
}
边栏推荐
- Base de données Advanced Learning Notes - - SQL statements
- Armv8-a programming guide MMU (2)
- Swagger、Yapi接口管理服务_SE
- 基于apache-jena的知识问答
- Postman Interface Association
- What does usart1 mean
- The virtual machine Ping is connected to the host, and the host Ping is not connected to the virtual machine
- [BMZCTF-pwn] 12-csaw-ctf-2016-quals hungman
- Rhcsa certification exam exercise (configured on the first host)
- 连接MySQL数据库出现错误:2059 - authentication plugin ‘caching_sha2_password‘的解决方法
猜你喜欢
QT creator shape
Postman environment variable settings
Installation and use of MySQL under MySQL 19 Linux
02-项目实战之后台员工信息管理
Dotnet replaces asp Net core's underlying communication is the IPC Library of named pipes
Rhcsa certification exam exercise (configured on the first host)
解决:log4j:WARN Please initialize the log4j system properly.
QT creator create button
QT creator runs the Valgrind tool on external applications
Pytorch基础
随机推荐
QT creator custom build process
Why can't STM32 download the program
01项目需求分析 (点餐系统)
Knowledge Q & A based on Apache Jena
Ansible实战系列二 _ Playbook入门
Django运行报错:Error loading MySQLdb module解决方法
报错解决 —— io.UnsupportedOperation: can‘t do nonzero end-relative seeks
Image recognition - pyteseract TesseractNotFoundError: tesseract is not installed or it‘s not in your path
Solution: log4j:warn please initialize the log4j system properly
Rhcsa certification exam exercise (configured on the first host)
[recommended by bloggers] asp Net WebService background data API JSON (with source code)
安全测试涉及的测试对象
Some notes of MySQL
Remember a company interview question: merge ordered arrays
Data dictionary in C #
Development of C language standard
QT creator specify editor settings
error C4996: ‘strcpy‘: This function or variable may be unsafe. Consider using strcpy_s instead
Picture coloring project - deoldify
Project practice - background employee information management (add, delete, modify, check, login and exit)