GPLT L2-007 家庭房产 (并查集)
题意:
给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。
思路:
输入和输出各构造一个结构体,利用并查集归并输入,枚举编号进行输出。
#include <bits/stdc++.h>
using namespace std; const int M=11000; struct DATA{
int id,fid,mid,num,area;
int cid[10];
}data[M]; struct NODE{
int id,people;
double num,area;
bool flag=false;
}ans[M]; int father[M];
bool visit[M]; 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;
if(faB>faA) father[faB]=faA;
} bool cmp(NODE a,NODE b){
if(a.area==b.area) return a.id<b.id;
else return a.area>b.area;
} int main()
{
int n,k,cnt=0;cin>>n;
for(int i=0;i<M;i++) father[i]=i;
for(int i=0;i<n;i++){
cin>>data[i].id>>data[i].fid>>data[i].mid>>k;
visit[data[i].id]=true;
if(data[i].fid!=-1){
Union(data[i].fid,data[i].id);
visit[data[i].fid]=true;
}
if(data[i].mid!=-1){
Union(data[i].mid,data[i].id);
visit[data[i].mid]=true;
}
for(int j=0;j<k;j++){
cin>>data[i].cid[j];
Union(data[i].id,data[i].cid[j]);
visit[data[i].cid[j]]=true;
}
cin>>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<M;i++){
if(visit[i]) ++ans[Find(i)].people;
if(ans[i].flag) ++cnt;
}
for(int i=0;i<M;i++){
if(ans[i].flag){
ans[i].num=1.0*ans[i].num/ans[i].people;
ans[i].area=1.0*ans[i].area/ans[i].people;
}
}
sort(ans,ans+M,cmp);
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;
}
GPLT L2-007 家庭房产 (并查集)的更多相关文章
- PATL2-007. 家庭房产-并查集
L2-007. 家庭房产 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定每个人的家庭成员和其自己名下的房产,请你统计出每个 ...
- L2-007. 家庭房产(并查集)
#include <cstdio> #include <set> #include <vector> #include <algorithm> usin ...
- TOJ3660家庭关系(并查集+hash+图的连通性)
家庭关系 时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte 总提交: 38 测试通过: 9 描述 给定若干家庭成员之间的关系 ...
- GPLT L2-010 排座位 (并查集)
Tips: 数据范围较小时可把二维数组当做map<pair<int,int>,int>使用. #include <bits/stdc++.h> using name ...
- L2-007 家庭房产 (25 分) (并查集)
链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805068539215872 题目: 给定每个人的家庭成员和其自己名 ...
- 天梯赛 L2-007. (并查集) 家庭房产
题目链接 题目描述 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(<=1000),随后N行,每行按下列格式 ...
- L2-007. 家庭房产(并查集)*
L2-007. 家庭房产 参考博客 #include <iostream> #include <cstdio> #include <cstring> #includ ...
- L2-007 家庭房产 (25分) 并查集
题目链接 题解:并查集把一个家的并在一起,特殊的一点是编号大的并到小的去.这个题有个坑编号可能为0000,会错数据3和5. 1 #include<bits/stdc++.h> 2 usin ...
- 团体程序设计天梯赛-练习集L2-007. 家庭房产
L2-007. 家庭房产 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定每个人的家庭成员和其自己名下的房产,请你统计出每个 ...
随机推荐
- Docker-Docker部署SpringBoot项目
1.手工方式 1.1.准备Springboot jar项目 将项目打包成jar 1.2.编写Dockerfile FROM java:8 VOLUME /tmp ADD elk-web-1.0-SNA ...
- git的使用命令总结
git一般方法git init 本地目录生成仓库git clone +项目url地址 克隆远程仓库git status 查看状态git pull 拉取 拉取的代码在用户家目录下git push 上传g ...
- 【EXPDP】导出全部表的时候,选择不导出某个表
导出的时候指定某一张表不导出的话,一般都用的是数据泵的expdp来操作 具体方法是: expdp test/test dumpfile=test.dmp directory=test_dir excl ...
- 爬虫-使用lxml解析html数据
使用lxml之前,我们首先要会使用XPath.利用XPath,就可以将html文档当做xml文档去进行处理解析了. 一.XPath的简单使用: XPath (XML Path Language) 是一 ...
- C# 合并和拆分PDF文件
一.合并和拆分PDF文件的方式 PDF文件使用了工业标准的压缩算法,易于传输与储存.它还是页独立的,一个PDF文件包含一个或多个"页",可以单独处理各页,特别适合多处理器系统的工作 ...
- win 10下Apache和PHP的安装配置
一.下载Apache 官网下载:https://httpd.apache.org/ 或者百度网盘链接:https://pan.baidu.com/s/17zVFNSfzzwDgFti_fboUSA 提 ...
- MongoDB 总结
目录 1. 逻辑结构 2. 安装部署 2.1 系统准备 2.2 mongodb安装 2.2.1 创建所需用户和组 2.2.2 创建mongodb所需目录结构 2.2.3 上传并解压软件到指定位置 2. ...
- 免费稳定图床最佳实践:PicGo+GitHub+jsDeliver 极简教程
一.下载 PicGo PicGo 是啥?顾名思义,它是一个快速上传图片并获取 图片 URL 链接的工具. 目前支持七牛.腾讯云.阿里云和 GitHub 等图床.该工具代码已在 GitHub 开源,读者 ...
- 关掉IE提示“当前安全设置会使计算机有风险”
我们先来看一下IE浏览器出现的提示窗口,该窗口位于最顶端,不点击设置的话,无法进行下一步的操作. 这时我们点击开始按钮 ,在弹出菜单中选择"运行"菜单项. 在打开的Windows运 ...
- Web自动化测试python环境中安装 --selenium安装、火狐和火狐驱动版本、谷歌和谷歌驱动版本、测试
一.安装selenium Windows命令行(cmd)输入pip install selenium(无须指定版本默认最新)或 pip install selenium==3.141.0(可指定版本) ...